:root{--bg:#07101a;--panel:#0b1622;--panel2:#0e1b29;--line:#1c2c3d;--text:#eef5fb;--muted:#8ba0b6;--accent:#5ed0ff;--accent2:#7dffb2;--danger:#ff6d7a;--warn:#ffd166;--shadow:0 12px 36px rgba(0,0,0,.22);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{overflow:hidden}button,input,select,textarea{font:inherit}button{touch-action:manipulation}.hidden{display:none!important}
.app{height:100dvh;display:flex;flex-direction:column}.topbar{min-height:64px;display:flex;align-items:center;gap:14px;padding:10px 14px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#091521,#07101a);z-index:10}.brand{display:flex;align-items:center;gap:10px;min-width:190px}.mark{width:36px;height:36px;border:1px solid #2b5068;border-radius:10px;display:grid;place-items:center;font-weight:900;color:var(--accent);background:#0d2331}.brand strong{display:block;font-size:15px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.top-project{flex:1;min-width:0;color:#b8ccdf;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.save{font-size:11px;color:var(--accent2);padding:8px 6px}.btn{border:1px solid #294052;background:#102131;color:var(--text);border-radius:8px;padding:8px 11px;cursor:pointer;transition:.15s;white-space:nowrap}.btn:hover{border-color:#4a7896;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.primary{background:linear-gradient(180deg,#18a6df,#087aa9);border-color:#43c7f7}.btn.ghost{background:#0c1724}.btn.danger{background:#2a1217;border-color:#6f2731;color:#ffb2ba}.btn.small{padding:6px 9px;font-size:12px}.btn.full{width:100%}.row{display:flex;gap:6px;align-items:center}.row.two>*{flex:1;min-width:0}
.workspace{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) 330px;gap:8px;padding:8px;background:#050d15}.panel{min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}.left-panel,.right-panel{overflow:auto}.panel-section{padding:10px;border-bottom:1px solid var(--line)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px;color:#cde0ef;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-bottom:9px}.section-title .hint-inline{font-size:9px;color:var(--muted);letter-spacing:0;text-transform:none}.stack{display:flex;flex-direction:column;gap:8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:7px}.field{display:flex;flex-direction:column;gap:4px;font-size:10px;color:var(--muted);min-width:0}.field input,.field select,.search,.field textarea,.db-editor input,.db-editor select,.db-editor textarea,.log-filter select,.log-filter input{width:100%;border:1px solid #203446;border-radius:7px;background:#08121d;color:var(--text);padding:8px;min-height:35px;outline:none}.field textarea,.db-editor textarea{min-height:75px;resize:vertical}.field input:focus,.field select:focus,.search:focus,.db-editor input:focus,.db-editor select:focus,.db-editor textarea:focus{border-color:#3d7694;box-shadow:0 0 0 2px rgba(94,208,255,.08)}.hint{font-size:11px;color:var(--muted);line-height:1.45;margin:0}.check,.checks label{display:flex;align-items:center;gap:7px;color:#b7c8d7;font-size:11px}.checks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.compact-fields{margin-top:8px;align-items:end}
.maplist{display:flex;flex-direction:column;gap:5px;max-height:150px;overflow:auto;margin:2px 0 8px}.mapchip{border:1px solid #1d2d3c;background:#08121c;border-radius:7px;color:#a9becf;padding:7px 8px;text-align:left;cursor:pointer}.mapchip.active{border-color:#2b9dc8;color:#fff;background:#0c2231}.layers{display:flex;flex-direction:column;gap:5px;margin-bottom:7px}.layerrow{display:grid;grid-template-columns:minmax(0,1fr) 28px 28px 28px;align-items:center;gap:4px;border:1px solid #1c2c3b;background:#08121c;border-radius:7px;padding:6px 7px;cursor:pointer}.layerrow.active{border-color:#2b8bb4;background:#0d2230}.layerrow strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layerrow button{border:0;background:transparent;color:#90a8b9;cursor:pointer}.layerrow button:hover{color:#fff}
.map-panel{display:flex;flex-direction:column;min-width:0}.map-toolbar{min-height:56px;border-bottom:1px solid var(--line);padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:10px}.map-toolbar strong{display:block;font-size:13px}.map-toolbar small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.toolbar-actions{display:flex;align-items:center;gap:6px}.badge{font-size:10px;color:#a6c1d3;background:#091723;border:1px solid #1a3041;border-radius:999px;padding:4px 8px}.canvaswrap{flex:1;min-height:0;overflow:auto;background-color:#060c13;background-image:linear-gradient(45deg,#09131d 25%,transparent 25%),linear-gradient(-45deg,#09131d 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#09131d 75%),linear-gradient(-45deg,transparent 75%,#09131d 75%);background-size:22px 22px;background-position:0 0,0 11px,11px -11px,-11px 0;position:relative;cursor:crosshair}.canvaswrap canvas{display:block;transform-origin:top left}.canvaswrap .overlay{position:absolute;left:0;top:0;pointer-events:none}.map-helpbar{min-height:30px;padding:6px 10px;border-top:1px solid var(--line);display:flex;gap:12px;align-items:center;justify-content:space-between;color:#70879b;font-size:9px;flex-wrap:wrap}.right-panel{display:flex;flex-direction:column}.tabbar{display:flex;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:2}.tab{flex:1;border:0;background:#08131e;color:#8296a8;padding:10px 5px;font-size:11px;cursor:pointer;border-right:1px solid var(--line)}.tab:last-child{border-right:0}.tab.active{background:#0d2231;color:#fff}.tabpage{display:none;padding:10px}.tabpage.active{display:block}.palette{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:46vh;overflow:auto;padding-top:6px}.tilepick{border:1px solid #1e3242;background:#08121c;border-radius:7px;padding:4px;color:#9fb2c2;cursor:pointer;min-width:0}.tilepick.active{border-color:#3ac8f7;background:#0b2130}.tilepick img{width:100%;height:62px;object-fit:contain;display:block;background:repeating-conic-gradient(#111 0 25%,#0b0b0b 0 50%) 50%/12px 12px;border-radius:4px}.tilepick span{font-size:9px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}.asset-mini-card{border:1px solid #1e3344;border-radius:8px;margin-top:8px;padding:8px;background:#08121c}.asset-mini-card strong{font-size:11px}.asset-mini-card small{display:block;color:var(--muted);font-size:10px;line-height:1.4}.db-tabs{display:flex;overflow:auto;gap:4px;margin-bottom:8px}.dbtab{border:1px solid #1d3141;background:#08121c;color:#95aabb;padding:6px 8px;border-radius:7px;white-space:nowrap;cursor:pointer;font-size:10px}.dbtab.active{border-color:#3b91b8;color:#fff;background:#0b2130}.db-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-bottom:8px}.db-list{display:flex;flex-direction:column;gap:5px;max-height:26vh;overflow:auto}.db-row{border:1px solid #1c3040;background:#08121c;border-radius:7px;padding:7px;cursor:pointer}.db-row.sel{border-color:#3c9fc6;background:#0b2130}.db-row b{font-size:11px}.db-row small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.db-editor{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.db-editor h4{margin:0 0 7px;font-size:11px}.db-editor .actions{display:flex;gap:5px;margin-top:8px}.objectlist{display:flex;flex-direction:column;gap:5px;max-height:20vh;overflow:auto}.objrow{border:1px solid #1c3040;background:#08121c;border-radius:7px;padding:7px;cursor:pointer}.objrow.sel{border-color:#3e9fc7;background:#0a2030}.objrow b{font-size:10px}.objrow .muted{font-size:9px;color:var(--muted);margin-top:2px}.export-zone{padding:10px;border-top:1px solid var(--line);margin-top:auto;background:#091521;position:sticky;bottom:0}.scroll{overflow:auto}.propgroup{border:1px solid #1d3141;border-radius:8px;padding:8px;background:#08121c}.propgroup h4{margin:0 0 7px;font-size:10px;color:#c9deed}.asset-vision{display:flex;gap:8px;align-items:center}.asset-vision img{width:58px;height:58px;object-fit:contain;background:#121212;border-radius:6px}
.toolgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.tool{border:1px solid #1b2f3f;background:#08121c;color:#93a8b8;border-radius:7px;padding:7px 5px;font-size:10px;cursor:pointer}.tool.active{border-color:#3ab8e4;color:#fff;background:#0c2432}.quick-actions{padding-bottom:16px}
.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.66);display:grid;place-items:center;padding:14px}.modal-backdrop{position:absolute;inset:0}.modal-card{position:relative;width:min(700px,96vw);max-height:94dvh;background:#091520;border:1px solid #274054;border-radius:12px;box-shadow:0 25px 80px rgba(0,0,0,.5);display:flex;flex-direction:column;overflow:hidden}.modal-card.wide{width:min(920px,97vw)}.modal-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;flex:none}.modal-head strong{display:block}.modal-head small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.modal-body{padding:12px;overflow:auto;min-height:0}.wizard-scroll{overflow:auto;max-height:calc(94dvh - 112px)}.wizard-note{padding:9px 10px;border:1px solid #26465b;background:#0a2030;border-radius:8px;color:#b9d1e0;font-size:11px;line-height:1.45;margin-bottom:10px}.wizard-section{border:1px solid #193040;border-radius:9px;background:#08121d;padding:10px;margin-bottom:9px}.wizard-section h3{margin:0 0 8px;font-size:12px}.modal-foot{padding:10px 12px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:7px;flex:none;background:#0b1722}.tutorial{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tutorial article{border:1px solid #1d3241;background:#08121c;border-radius:8px;padding:10px}.tutorial article b{font-size:11px}.tutorial article p{font-size:10px;color:#9cafbe;line-height:1.5;margin:6px 0 0}.log-card{width:min(980px,97vw)}.log-filter{padding:8px 12px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:120px 1fr;gap:7px}.logbox{margin:0;padding:12px;overflow:auto;flex:1;min-height:250px;white-space:pre-wrap;word-break:break-word;color:#c4d5e1;font:11px ui-monospace,SFMono-Regular,Menlo,monospace;background:#050b11}.toast{position:fixed;left:50%;bottom:18px;transform:translate(-50%,20px);opacity:0;transition:.18s;background:#0e2230;border:1px solid #31556c;color:#e8f7ff;border-radius:8px;padding:8px 12px;font-size:11px;z-index:200;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}
body.modal-open{overflow:hidden}@media (max-width:1150px){.workspace{grid-template-columns:260px minmax(0,1fr) 300px}.top-actions .btn span{display:none}}@media (max-width:900px){body{overflow:auto}.app{height:auto;min-height:100dvh}.topbar{align-items:flex-start;flex-wrap:wrap}.brand{min-width:0}.top-project{order:3;flex-basis:100%}.top-actions{width:100%;justify-content:flex-start}.workspace{display:flex;flex-direction:column;min-height:0;padding:6px}.left-panel,.right-panel,.map-panel{height:auto;max-height:none;overflow:visible}.left-panel,.right-panel{display:block}.map-panel{min-height:52dvh;max-height:70dvh}.map-toolbar{position:sticky;top:0;background:var(--panel);z-index:3}.canvaswrap{min-height:44dvh;height:44dvh}.palette{max-height:34dvh}.db-list{max-height:28dvh}.objectlist{max-height:22dvh}.export-zone{position:static}.tutorial{grid-template-columns:1fr}.wizard-scroll{max-height:calc(94dvh - 125px)}}@media (max-width:600px){.grid2,.checks{grid-template-columns:1fr}.toolgrid{grid-template-columns:repeat(2,1fr)}.db-actions{grid-template-columns:1fr}.top-actions .btn{flex:1;min-width:0;padding:8px 7px}.top-actions .btn:nth-child(n+6){flex-basis:100%}.modal{padding:6px}.modal-card{max-height:98dvh}.modal-foot{position:sticky;bottom:0}.wizard-scroll{max-height:calc(98dvh - 118px)}.map-helpbar{font-size:8px}.map-panel{min-height:50dvh}.canvaswrap{height:42dvh;min-height:320px}.palette{grid-template-columns:repeat(4,minmax(0,1fr))}}
