:root{--navy: #0d2c54;--navy-2: #123a6b;--accent: #1e6fc7;--accent-soft: #cfe3f7;--ribbon: #f5f6f7;--ribbon-line: #d9dde2;--panel: #ffffff;--work: #e8e9eb;--text: #1f2933;--muted: #6b7682;--danger: #c62828;--ok: #2e7d32;--sel: #1e6fc7;font-family:Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif;font-size:13px;color:var(--text)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--work);overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}.app{display:flex;flex-direction:column;height:100vh}.titlebar{background:var(--navy);color:#fff;height:34px;display:flex;align-items:center;padding:0 6px;gap:2px;flex:none;-webkit-user-select:none;user-select:none}.titlebar .qa{background:none;border:0;padding:4px 6px;border-radius:3px;cursor:pointer;display:grid;place-items:center}.titlebar .qa:hover:not(:disabled){background:#ffffff24}.titlebar .qa:disabled{opacity:.4;cursor:default}.titlebar .title{flex:1;text-align:center;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px}.titlebar .who{font-size:12px;opacity:.85;padding:0 8px;white-space:nowrap}.tabs{background:var(--navy);display:flex;align-items:flex-end;height:30px;padding-left:4px;flex:none;-webkit-user-select:none;user-select:none}.tabs button{background:none;border:0;color:#fff;padding:6px 16px 7px;cursor:pointer;font-size:14px;border-radius:2px 2px 0 0}.tabs button:hover{background:#ffffff1f}.tabs button.on{background:var(--ribbon);color:var(--accent)}.tabs button.file{padding:6px 18px 7px}.tabs button.ctx{color:#ffe28a}.tabs button.ctx.on{color:#b7791f}.ribbon{background:var(--ribbon);border-bottom:1px solid var(--ribbon-line);height:110px;display:flex;flex:none;overflow-x:auto;overflow-y:hidden;-webkit-user-select:none;user-select:none}.group{display:flex;flex-direction:column;border-right:1px solid var(--ribbon-line);padding:4px 6px 0;flex:none}.group-body{flex:1;display:flex;gap:2px;align-items:flex-start}.group-label{text-align:center;color:#555;font-size:13px;padding:2px 0 3px;display:flex;justify-content:center;align-items:center;gap:6px}.group-label .launcher{background:none;border:0;padding:0 2px;cursor:pointer;color:#777;font-size:10px}.big{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-width:54px;max-width:92px;padding:3px 4px;border:1px solid transparent;background:none;border-radius:2px;cursor:pointer;text-align:center;line-height:1.15;height:78px;font-size:13px;color:#333}.big:hover:not(:disabled),.small:hover:not(:disabled),.ibtn:hover:not(:disabled){background:#dfeaf6;border-color:#a9c7e8}.big:disabled,.small:disabled,.ibtn:disabled{opacity:.4;cursor:default}.big svg{margin-bottom:3px;flex:none}.small{display:flex;align-items:center;gap:5px;padding:2px 5px;border:1px solid transparent;background:none;border-radius:2px;cursor:pointer;height:26px;white-space:nowrap;color:#333;font-size:13px}.col{display:flex;flex-direction:column;gap:1px}.row{display:flex;gap:2px;align-items:center}.ibtn{width:27px;height:27px;display:grid;place-items:center;border:1px solid transparent;background:none;border-radius:2px;cursor:pointer;padding:0;font-weight:700;font-size:15px;color:#333}.ibtn.on{background:var(--accent-soft);border-color:#8fb8e3}.rsel{height:24px;border:1px solid #b9c0c8;background:#fff;border-radius:1px;padding:0 4px}.main{flex:1;display:flex;min-height:0}.side{width:288px;background:var(--work);display:flex;flex-direction:column;border-right:1px solid #cfd3d8;flex:none}.toolbox{background:#fff;margin:0 0 6px;padding:14px 6px 10px;display:grid;grid-template-columns:repeat(3,1fr);gap:4px 2px;border-bottom:1px solid #cfd3d8}.tool{display:flex;flex-direction:column;align-items:center;background:none;border:1px solid transparent;cursor:pointer;padding:4px 2px;border-radius:2px;font-size:14px;color:#333;line-height:1.2;position:relative}.tool:hover{background:#e9f1fa;border-color:#c3d8ef}.tool.on{background:var(--accent-soft);border-color:#8fb8e3}.tool .dd{position:absolute;right:6px;top:12px;opacity:.7}.explorer{flex:1;background:#fff;margin:0 4px 4px;border:1px solid #cfd3d8;display:flex;flex-direction:column;min-height:0}.explorer input.search{margin:6px;padding:4px 8px;border:1px solid #cfd3d8}.tree{overflow:auto;flex:1;padding:2px 0 8px;font-size:15px}.tree .node{display:flex;align-items:center;gap:6px;padding:3px 6px;cursor:default;white-space:nowrap}.tree .node.sub{padding-left:46px;font-size:14px}.tree .node.act{padding-left:46px;font-size:14.5px;color:#444;cursor:pointer}.tree .node.act:hover,.tree .node.sub:hover{background:#eef4fb}.tree .node.sub.sel{background:var(--accent-soft)}.tree .tw{width:12px;font-size:10px;color:#555;cursor:pointer}.tree .count{color:var(--muted);font-size:12px;margin-left:auto}.workspace{flex:1;display:flex;flex-direction:column;min-width:0}.canvas-wrap{flex:1;position:relative;overflow:hidden;background:var(--work)}.ruler-h,.ruler-v{position:absolute;background:#fbfbfb;z-index:2}.ruler-h{left:22px;right:0;top:0;height:22px;border-bottom:1px solid #c8ccd1}.ruler-v{top:22px;bottom:0;left:0;width:22px;border-right:1px solid #c8ccd1}.ruler-corner{position:absolute;left:0;top:0;width:22px;height:22px;background:#fbfbfb;border-right:1px solid #c8ccd1;border-bottom:1px solid #c8ccd1;z-index:3}.scroller{position:absolute;left:22px;top:22px;right:0;bottom:0;overflow:auto}.stage{position:relative}.paper{position:absolute;background:#fff;box-shadow:0 1px 6px #00000059}.paper canvas{position:absolute;left:0;top:0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0}.elbox{position:absolute;outline:1px dashed rgba(90,100,110,.55);outline-offset:0;cursor:move}.elbox.locked{cursor:default}.elbox.sel{outline:1px solid var(--sel)}.elbox .h{position:absolute;width:8px;height:8px;background:#fff;border:1px solid var(--sel)}.rubber{position:absolute;border:1px dashed var(--sel);background:#1e6fc714;pointer-events:none}.inplace{position:absolute;z-index:5;border:1px solid var(--sel);background:#fff;outline:none;padding:0;margin:0;resize:none;overflow:hidden;line-height:1.15;white-space:pre-wrap}.bottomtabs{height:30px;display:flex;align-items:flex-end;background:var(--work);padding-left:10px;gap:2px;border-top:1px solid #cfd3d8;flex:none}.bottomtabs button{border:1px solid #cfd3d8;border-top:0;background:#f3f4f5;padding:4px 12px;cursor:pointer;font-size:14px;display:flex;gap:8px;align-items:center}.bottomtabs button.on{background:#fff;color:var(--navy);font-weight:700;border-bottom:2px solid var(--accent)}.bottomtabs .x{font-weight:400;color:#888;padding:0 2px}.bottomtabs .x:hover{color:var(--danger)}.statusbar{height:26px;background:#f3f4f5;border-top:1px solid #cfd3d8;display:flex;align-items:center;gap:14px;padding:0 10px;font-size:12px;color:#444;flex:none}.statusbar .grow{flex:1}.statusbar select{height:20px;font-size:12px}.seat-ok{color:var(--ok)}.seat-ko{color:var(--danger);font-weight:600}.props{width:300px;background:#fff;border-left:1px solid #cfd3d8;overflow:auto;flex:none}.props h3{margin:0;padding:8px 10px;background:#f3f4f5;border-bottom:1px solid #e1e4e8;font-size:13px;display:flex;justify-content:space-between;align-items:center}.props .sec{padding:8px 10px;border-bottom:1px solid #eef0f2}.props .sec>b{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px}.f{display:grid;grid-template-columns:96px 1fr;gap:4px 6px;align-items:center;margin-bottom:5px}.f>label{color:#444;font-size:12.5px}.f input[type=text],.f input[type=number],.f select,.f textarea,.inp{width:100%;border:1px solid #c3c9d0;padding:3px 5px;border-radius:2px;background:#fff}.f textarea{min-height:70px;resize:vertical;font-family:Consolas,monospace;font-size:12px}.two{display:grid;grid-template-columns:1fr 1fr;gap:6px}.chk{display:flex;align-items:center;gap:6px;font-size:12.5px;margin:3px 0}.hint{color:var(--muted);font-size:12px;line-height:1.35}.err{color:var(--danger)}.menu{position:fixed;z-index:1000;background:#fff;border:1px solid #b9c0c8;box-shadow:0 4px 14px #0000002e;padding:3px 0;min-width:190px;max-height:70vh;overflow:auto}.menu button{display:flex;width:100%;text-align:left;background:none;border:0;padding:6px 14px;cursor:pointer;gap:8px;align-items:center;white-space:nowrap}.menu button:hover:not(:disabled){background:#e3eefa}.menu button:disabled{opacity:.45}.menu .sep{height:1px;background:#e1e4e8;margin:3px 0}.menu .hd{padding:6px 14px 2px;font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f192861;z-index:900;display:grid;place-items:center;padding:16px}.modal{background:#fff;width:min(720px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 10px 40px #00000059;border:1px solid #8a96a3}.modal.wide{width:min(1100px,100%)}.modal header{background:var(--navy);color:#fff;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;font-size:14px}.modal header button{background:none;border:0;color:#fff;font-size:18px;cursor:pointer;line-height:1}.modal .body{padding:14px;overflow:auto;flex:1}.modal footer{padding:10px 14px;border-top:1px solid #e1e4e8;display:flex;justify-content:flex-end;gap:8px;background:#f7f8f9}.btn{border:1px solid #a7b0ba;background:#fff;padding:5px 16px;border-radius:2px;cursor:pointer;min-width:84px}.btn:hover:not(:disabled){background:#eef4fb;border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#185ba6}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.5;cursor:default}.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl th,.tbl td{border:1px solid #e1e4e8;padding:4px 6px;text-align:left;vertical-align:top}.tbl th{background:#f3f4f5;position:sticky;top:0;z-index:1}.tbl tr.sel td{background:#eaf2fb}.tblwrap{max-height:340px;overflow:auto;border:1px solid #e1e4e8}.badge{display:inline-block;padding:1px 7px;border-radius:9px;font-size:11.5px;background:#eef0f2}.badge.ok{background:#e3f4e5;color:var(--ok)}.badge.ko{background:#fde8e8;color:var(--danger)}.badge.wait{background:#fff4d6;color:#8a6100}.toast{position:fixed;left:50%;bottom:46px;transform:translate(-50%);background:#23313f;color:#fff;padding:9px 18px;border-radius:3px;z-index:2000;box-shadow:0 4px 16px #0000004d;max-width:80vw}.toast.ko{background:#9b1c1c}.backstage{position:absolute;top:64px;right:0;bottom:0;left:0;background:#fff;z-index:50;display:flex}.bs-nav{width:230px;background:var(--navy);color:#fff;display:flex;flex-direction:column;padding:10px 0;overflow:auto}.bs-nav button{background:none;border:0;color:#fff;text-align:left;padding:9px 24px;cursor:pointer;font-size:15px}.bs-nav button:hover{background:#ffffff1f}.bs-nav button.on{background:#fff3}.bs-nav .back{font-size:20px;padding:4px 18px 12px}.bs-nav .sep{height:1px;background:#fff3;margin:8px 16px}.bs-body{flex:1;overflow:auto;padding:24px 32px}.bs-body h1{font-weight:400;font-size:26px;margin:0 0 18px;color:var(--navy)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.card{border:1px solid #d5dae0;background:#fff;cursor:pointer;display:flex;flex-direction:column}.card:hover{border-color:var(--accent);box-shadow:0 2px 8px #1e6fc726}.card .thumb{height:130px;display:grid;place-items:center;background:#eceef0;border-bottom:1px solid #e1e4e8}.card .thumb img{max-width:92%;max-height:118px;box-shadow:0 1px 4px #0000004d;background:#fff}.card .meta{padding:8px 10px}.card .meta b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .meta span{color:var(--muted);font-size:12px}.card .acts{display:flex;gap:2px;padding:0 6px 6px}.card .acts button{background:none;border:1px solid transparent;padding:2px 6px;cursor:pointer;font-size:12px;color:var(--accent)}.card .acts button:hover{border-color:#c3d8ef}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,var(--navy),#1e4f8f);padding:16px;overflow:auto}.login form{background:#fff;padding:28px 30px;width:min(380px,100%);box-shadow:0 10px 40px #00000059}.login h1{margin:0 0 4px;font-size:22px;color:var(--navy);display:flex;gap:10px;align-items:center}.login p{color:var(--muted);margin:0 0 18px}.login label{display:block;margin:10px 0 4px}.login input{width:100%;padding:8px 10px;border:1px solid #c3c9d0}.login .btn{width:100%;margin-top:18px;padding:9px}.page{height:100vh;overflow:auto;background:#f3f4f5}.page .inner{max-width:1200px;margin:0 auto;padding:20px 16px}.two .f{grid-template-columns:52px 1fr}.two .f input{min-width:0}.titlebar .btn{color:var(--text);min-width:0;padding:3px 12px}.zbtn{border:1px solid transparent;background:none;cursor:pointer;width:22px;height:20px;display:grid;place-items:center;font-size:16px;line-height:1;padding:0;border-radius:2px;color:#333}.zbtn:hover{background:#dfeaf6;border-color:#a9c7e8}.licbar{background:#fff4d6;border-bottom:1px solid #e7cf8a;color:#6b4e00;padding:5px 12px;display:flex;gap:8px;align-items:center;flex:none}.licbar .ibtn{margin-left:auto;width:22px;height:22px}
