*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{color:#c0c0e0;-webkit-font-smoothing:antialiased;background:#13131f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5}.tpl-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.tpl-modal{background:#1e1e2e;border:1px solid #2e2e42;border-radius:14px;flex-direction:column;gap:20px;width:min(700px,92vw);max-height:82vh;padding:28px;display:flex;overflow-y:auto;box-shadow:0 32px 80px #0009}.tpl-modal::-webkit-scrollbar{width:6px}.tpl-modal::-webkit-scrollbar-track{background:0 0}.tpl-modal::-webkit-scrollbar-thumb{background:#3a3a54;border-radius:3px}.tpl-modal__header{justify-content:space-between;align-items:center;display:flex}.tpl-modal__title{color:#e0e0f0;margin:0;font-size:1.2rem;font-weight:700}.tpl-modal__close{color:#6060a0;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 9px;font-size:1rem;line-height:1;transition:background .15s,color .15s}.tpl-modal__close:hover{color:#e0e0f0;background:#2e2e44}.tpl-modal__subtitle{color:#6868a8;margin:0;font-size:.82rem;line-height:1.4}.tpl-modal__grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}@media (width<=520px){.tpl-modal__grid{grid-template-columns:1fr}}.tpl-card{cursor:default;background:#252538;border:1px solid #2a2a42;border-radius:10px;flex-direction:column;gap:10px;padding:18px;transition:border-color .15s,box-shadow .15s;display:flex}.tpl-card:hover{border-color:#4f8ef7;box-shadow:0 0 0 1px #4f8ef726}.tpl-card__icon{font-size:1.9rem;line-height:1}.tpl-card__body{flex-direction:column;flex:1;gap:5px;display:flex}.tpl-card__name{color:#d8d8f0;margin:0;font-size:.95rem;font-weight:700}.tpl-card__desc{color:#7878a8;margin:0;font-size:.8rem;line-height:1.45}.tpl-card__stats{color:#4a4a70;font-variant-numeric:tabular-nums;margin:0;font-size:.75rem}.tpl-card__use{color:#fff;cursor:pointer;white-space:nowrap;background:#4f8ef7;border:none;border-radius:6px;align-self:flex-start;padding:6px 15px;font-size:.82rem;font-weight:600;transition:background .15s}.tpl-card__use:hover{background:#3a7de8}.header{-webkit-user-select:none;user-select:none;background:#1e1e2e;border-bottom:1px solid #2e2e42;justify-content:space-between;align-items:center;gap:16px;height:52px;padding:0 16px;display:flex;box-shadow:0 1px 4px #0000004d}.header__brand{flex-shrink:0;align-items:center;gap:10px;display:flex}.header__logo{align-items:center;display:flex}.header__title{color:#e0e0f0;letter-spacing:.02em;font-size:1.15rem;font-weight:700}.header__nav{flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.header__nav-item{color:#a0a0c0;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-family:inherit;font-size:.875rem;font-weight:500;line-height:normal;text-decoration:none;transition:background .15s,color .15s}.header__nav-item:hover{color:#e0e0f0;background:#2e2e44}.header__nav-item--active{color:#7eb8ff;background:#2e2e44}.header__actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.header__btn{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:6px 16px;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s,color .15s}.header__btn--ghost{color:#a0a0c0;background:0 0;border-color:#3a3a54}.header__btn--ghost:hover{color:#e0e0f0;background:#2e2e44}.header__btn--primary{color:#fff;background:#4f8ef7}.header__btn--primary:hover{background:#3a7de8}.header__import-error{color:#f07070;white-space:nowrap;font-size:.8rem}.toolbar{background:#1e1e2e;border-right:1px solid #2e2e42;flex-direction:column;align-items:center;gap:4px;width:52px;padding:10px 0;display:flex;overflow:hidden auto;box-shadow:1px 0 4px #0003}.toolbar__btn{color:#88a;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;padding:6px;transition:background .15s,color .15s;display:flex}.toolbar__btn svg{width:18px;height:18px}.toolbar__btn:hover{color:#c0c0e0;background:#2e2e44}.toolbar__btn.active,.toolbar__btn:active,.toolbar__btn--active{color:#7eb8ff;background:#3a3a58}.toolbar__btn--draggable{cursor:grab;position:relative}.toolbar__btn--draggable:active{cursor:grabbing}.toolbar__drag-hint{color:#4f8ef7;pointer-events:none;font-size:9px;font-weight:700;line-height:1;position:absolute;bottom:3px;right:3px}.toolbar__divider{background:#2e2e42;flex-shrink:0;width:28px;height:1px;margin:4px 0}.prop-panel{color:#c8c8e0;z-index:100;background:#1b1b2d;border:1px solid #2e2e42;border-radius:10px;width:236px;font-size:.8rem;animation:.14s prop-panel-in;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 4px 28px #0000008c}@keyframes prop-panel-in{0%{opacity:0;transform:translateY(-6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.prop-panel__header{border-bottom:1px solid #2a2a3e;align-items:center;gap:8px;padding:10px 12px 9px;display:flex}.prop-panel__type-badge{text-transform:uppercase;letter-spacing:.07em;color:#fff;border-radius:4px;flex-shrink:0;padding:2px 7px;font-size:.68rem;font-weight:700}.prop-panel__type-badge--inline{vertical-align:middle;border-radius:3px;padding:1px 5px;font-size:.62rem}.prop-panel__title{color:#e0e0f0;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.prop-tabs{border-bottom:1px solid #2a2a3e;display:flex}.prop-tab{color:#5a5a7e;cursor:pointer;letter-spacing:.03em;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:6px 4px;font-size:.71rem;font-weight:600;transition:color .14s,border-color .14s,background .14s}.prop-tab:hover{color:#a0a0c8;background:#ffffff08}.prop-tab--active{color:#e0e0f0;border-bottom-color:#4f8ef7}.prop-panel__body{padding:8px 12px 6px}.prop-row{justify-content:space-between;align-items:center;gap:8px;padding:3px 0;display:flex}.prop-row__label{color:#6a6a8a;flex-shrink:0;font-size:.75rem}.prop-row__value{color:#c8c8e0;font-variant-numeric:tabular-nums;text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.prop-panel__divider{border:none;border-top:1px solid #252535;margin:6px 0}.prop-swatch{align-items:center;gap:5px;display:flex}.prop-swatch__dot{border:1px solid #ffffff1f;border-radius:3px;flex-shrink:0;width:13px;height:13px}.prop-swatch__hex{color:#a0a0c0;font-family:Courier New,monospace;font-size:.72rem}.prop-color-trigger{cursor:pointer;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:3px 2px;transition:background .12s;display:flex}.prop-color-trigger:hover,.prop-color-trigger--open{background:#ffffff0a}.prop-color-trigger-right{align-items:center;gap:5px;display:flex}.prop-color-dot{border:1px solid #ffffff1f;border-radius:3px;flex-shrink:0;width:13px;height:13px;display:inline-block}.prop-color-caret{color:#5a5a7a;flex-shrink:0;font-size:.55rem;line-height:1}.prop-color-panel{background:#151524;border:1px solid #2e2e42;border-radius:7px;flex-direction:column;gap:7px;margin:5px 0 3px;padding:8px;display:flex}.prop-color-grid{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.prop-color-cell{aspect-ratio:1;cursor:pointer;border:1px solid #ffffff14;border-radius:4px;width:100%;padding:0;transition:transform .1s,box-shadow .1s}.prop-color-cell:hover{z-index:1;transform:scale(1.18);box-shadow:0 0 0 2px #ffffff40}.prop-color-cell--active{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #4f8ef7}.prop-color-hex-row{background:#101020;border:1px solid #2a2a42;border-radius:5px;align-items:center;gap:4px;padding:3px 6px;display:flex}.prop-color-hash{color:#5a5a7a;flex-shrink:0;font-family:Courier New,monospace;font-size:.72rem}.prop-color-hex-input{color:#c8c8e0;letter-spacing:.05em;text-transform:uppercase;background:0 0;border:none;outline:none;flex:1;min-width:0;font-family:Courier New,monospace;font-size:.72rem}.prop-color-hex-apply{color:#4caf7a;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:.8rem;line-height:1;transition:color .12s}.prop-color-hex-apply:hover{color:#70d090}.edge-style-picker{gap:3px;display:flex}.edge-style-btn{color:#5a5a7a;cursor:pointer;background:#ffffff0a;border:1px solid #2a2a42;border-radius:5px;justify-content:center;align-items:center;width:34px;height:24px;padding:0;transition:background .12s,border-color .12s,color .12s;display:flex}.edge-style-btn:hover{color:#b0b0d0;background:#ffffff14;border-color:#4a4a6a}.edge-style-btn--active{color:#7eb8ff;background:#4f8ef726;border-color:#4f8ef7}.prop-conn-list{padding-top:4px;padding-bottom:4px}.prop-conn-row{border-radius:5px;align-items:center;gap:5px;padding:4px 0;display:flex}.prop-conn-row__dir{color:#4f8ef7;text-align:center;flex-shrink:0;width:14px;font-size:.85rem}.prop-conn-row__label{color:#c8c8e0;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.77rem;overflow:hidden}.prop-conn-row__side{color:#4a4a6a;flex-shrink:0;font-size:.67rem}.prop-conn-empty{color:#3e3e5e;text-align:center;margin:0;padding:14px 0;font-size:.75rem;font-style:italic}.prop-node-card{background:#ffffff0a;border:1px solid #2a2a3e;border-radius:6px;align-items:center;gap:6px;padding:6px 8px;display:flex}.prop-node-card__label{color:#c8c8e0;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.78rem;overflow:hidden}.prop-node-card__side{color:#4a4a6a;flex-shrink:0;font-size:.67rem}.prop-arrow-connector{text-align:center;color:#4f8ef7;padding:2px 0;font-size:1rem}.prop-panel__footer{border-top:1px dashed #252535;align-items:center;gap:8px;padding:7px 12px 10px;display:flex}.prop-panel__footer-hint{color:#3e3e5e;text-align:right;flex:1;font-size:.71rem;font-style:italic}.prop-panel__delete-btn{color:#f07070;cursor:pointer;letter-spacing:.04em;background:#c8282826;border:1px solid #c828284d;border-radius:5px;flex-shrink:0;padding:3px 9px;font-size:.7rem;font-weight:700;transition:background .14s,border-color .14s,color .14s}.prop-panel__delete-btn:hover{color:#ff9090;background:#dc32324d;border-color:#dc3c3c8c}.board{cursor:grab;-webkit-user-select:none;user-select:none;background:#13131f;flex:1;position:relative;overflow:hidden}.board--panning{cursor:grabbing}.board--panning *{cursor:grabbing!important}.board--dragging-node{cursor:grabbing}.board--dragging-node *{cursor:grabbing!important}.board--dragging-edge{cursor:move}.board--dragging-edge *{cursor:move!important}.board__canvas{width:100%;height:100%;display:block}.diagram-node{cursor:move}.diagram-node--rectangle rect{transition:stroke .15s,filter .15s}.diagram-node--rectangle:hover rect{stroke:#7eb8ff;filter:drop-shadow(0 0 6px #4f8ef773)}.diagram-node--diamond polygon{transition:stroke .15s,filter .15s}.diagram-node--diamond:hover polygon{stroke:#6ddfa0;filter:drop-shadow(0 0 6px #4caf7a73)}.diagram-edge path{transition:stroke .15s}.diagram-edge:hover path{stroke:#a0b0e0}.edge-handle{fill:#252d42;stroke:#5a6a9a;stroke-width:1.5px;cursor:crosshair;transition:fill .15s,stroke .15s}.edge-handle:hover{fill:#4f8ef7;stroke:#7eb8ff}.diagram-node--selected rect,.diagram-node--selected ellipse,.diagram-node--selected polygon{stroke-dasharray:5 3;filter:drop-shadow(0 0 6px #f0c0408c);stroke:#f0c040!important}.diagram-edge--selected path:first-child{stroke:#f0c040!important;stroke-width:2px!important}.board--arrow-tool{cursor:crosshair}.board--arrow-tool .diagram-node{cursor:pointer}.board--select-area-tool,.board--select-area-tool .diagram-node{cursor:crosshair}.board--rubber-band,.board--rubber-band *{cursor:crosshair!important}.diagram-node--ellipse ellipse{transition:stroke .15s,filter .15s}.diagram-node--ellipse:hover ellipse{stroke:#c09fff;filter:drop-shadow(0 0 6px #9b71f773)}.snap-target{fill:#4caf7a14;stroke:#4caf7a;stroke-width:1.5px;stroke-dasharray:3 2;transition:r .1s}.snap-target--active{fill:#4caf7a47;stroke:#6ddfa0;stroke-width:2px;stroke-dasharray:none}.resize-handle{fill:#1c2540;stroke:#7eb8ff;stroke-width:1.5px;transition:fill .12s,stroke .12s}.resize-handle:hover{fill:#4f8ef7;stroke:#b0d8ff}.board--resizing{cursor:inherit}.edge-waypoint{fill:#1e2438;stroke:#e8a030;stroke-width:1.5px;cursor:move;transition:fill .15s,stroke .15s}.edge-waypoint:hover{fill:#3a2e10;stroke:#ffc060}.edge-waypoint--selected{fill:#3a2e10;stroke:#f0c040;stroke-width:2px;filter:drop-shadow(0 0 5px #f0c04099)}.diagram-node--highlighted rect,.diagram-node--highlighted ellipse,.diagram-node--highlighted polygon{filter:drop-shadow(0 0 8px #4de8c0a6);transition:stroke .2s,filter .2s;stroke:#4de8c0!important;stroke-dasharray:none!important}.diagram-edge--highlighted path:first-child{filter:drop-shadow(0 0 5px #4de8c08c);stroke:#4de8c0!important}.footer{height:32px;color:#6060808;-webkit-user-select:none;user-select:none;background:#1e1e2e;border-top:1px solid #2e2e42;justify-content:space-between;align-items:center;gap:12px;padding:0 16px;font-size:.75rem;display:flex}.footer__left,.footer__center,.footer__right{align-items:center;gap:6px;display:flex}.footer__left{flex:1}.footer__center{flex:1;justify-content:center}.footer__right{flex:1;justify-content:flex-end}.footer__zoom-label{color:#60608a}.footer__zoom-value{text-align:center;color:#9090b0;min-width:38px;font-weight:500}.footer__icon-btn{width:20px;height:20px;color:#60608a;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:2px;transition:background .15s,color .15s;display:flex}.footer__icon-btn svg{width:12px;height:12px}.footer__icon-btn:hover{color:#c0c0e0;background:#2e2e44}.footer__text-btn{color:#60608a;cursor:pointer;background:0 0;border:1px solid #2e2e44;border-radius:4px;padding:2px 8px;font-size:.7rem;transition:background .15s,color .15s}.footer__text-btn:hover{color:#c0c0e0;background:#2e2e44}.footer__status{color:#4caf7a;font-weight:500}.footer__coords{color:#60608a;font-family:monospace;font-size:.7rem}.footer__divider{color:#2e2e44}.footer__info{color:#40405a}.footer__zoom-level{color:#7a8bbf;letter-spacing:.02em;white-space:nowrap;font-size:.7rem;font-weight:500}.app-shell{background:#13131f;flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.app-body{flex:1;display:flex;overflow:hidden}
