html,body,#app{color:#1f2329;background:#f5f6f7;width:100%;height:100%;margin:0;font-family:-apple-system,PingFang SC,Helvetica Neue,sans-serif;font-size:13px;overflow:hidden}#app{display:flex}#history-panel,#layers-panel{background:#fff;flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}#history-panel{border-right:1px solid #e5e6eb;width:264px}#layers-panel{border-left:1px solid #e5e6eb;width:300px}.sidebar-section[hidden]{display:none}.sidebar-section{border-bottom:1px solid #e5e6eb;flex-direction:column;flex-shrink:0;gap:8px;padding:12px;display:flex}.sidebar-section h1,.sidebar-section h2{margin:0;font-size:14px;font-weight:600}.sidebar-section button{color:#1f2329;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;padding:6px 10px}.sidebar-section button:hover:not(:disabled){background:#f2f3f5;border-color:#c0c4cc}.sidebar-section button:disabled{opacity:.45;cursor:not-allowed}.sidebar-section textarea{resize:vertical;color:#1f2329;min-height:40px;font:inherit;background:#fff;border:1px solid #d0d3d9;border-radius:4px;padding:6px}.status{color:#86909c;word-break:break-all;min-height:16px;margin:0}.status.error{color:#f53f3f}.layer-list{flex:1;min-height:120px;margin:0;padding:8px;list-style:none;overflow-y:auto}.layer-item{cursor:pointer;border:1px solid #0000;border-radius:4px;align-items:center;gap:8px;padding:6px 8px;display:flex}.layer-item:hover{background:#f2f3f5}.layer-item.selected{background:#e1eaff;border-color:#3370ff}.layer-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.layer-item .layer-id{color:#86909c;font-size:11px}#viewport{background-color:#fff;background-image:linear-gradient(45deg,#eceef1 25%,#0000 25% 75%,#eceef1 75%),linear-gradient(45deg,#eceef1 25%,#0000 25% 75%,#eceef1 75%);background-position:0 0,8px 8px;background-size:16px 16px;flex:1;min-width:0;position:relative}#canvas-actions{z-index:10;gap:6px;display:flex;position:absolute;top:12px;left:12px}#canvas-actions button{color:#1f2329;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;padding:5px 10px;box-shadow:0 2px 6px #00000014}#canvas-actions button:hover:not(:disabled){background:#f2f3f5;border-color:#c0c4cc}#canvas-actions button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}#canvas-actions button.active{color:#3370ff;background:#e1eaff;border-color:#3370ff}.layer-list-title{color:#1f2329;z-index:1;background:#fff;align-items:baseline;gap:4px;padding:4px 8px 8px;font-size:13px;font-weight:600;display:flex;position:sticky;top:0}.layer-list.confirming .layer-list-title{background:#f7faff}.layer-list-title .count{color:#86909c;font-weight:400}.layer-thumb{background-color:#fff;background-image:linear-gradient(45deg,#eceef1 25%,#0000 25% 75%,#eceef1 75%),linear-gradient(45deg,#eceef1 25%,#0000 25% 75%,#eceef1 75%);background-position:0 0,4px 4px;background-size:8px 8px;border:1px solid #e5e6eb;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:44px;display:flex;overflow:hidden}.layer-thumb img{max-width:100%;max-height:100%;display:block}.eye-btn{color:#86909c;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.eye-btn:hover{color:#1f2329;background:#e8eaed}.eye-btn.off{color:#c9cdd4}.layer-item.hidden-layer .name,.layer-item.hidden-layer .layer-thumb{opacity:.45}.split-btn{color:#4e5969;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;flex-shrink:0;padding:2px 8px;font-size:11px}.split-btn:hover:not(:disabled){color:#3370ff;background:#e1eaff;border-color:#3370ff}.split-btn:disabled{opacity:.4;cursor:not-allowed}.layer-info-card{z-index:200;color:#1f2329;background:#fff;border:1px solid #e5e6eb;border-radius:6px;min-width:220px;max-width:320px;padding:10px 12px;font-size:12px;position:fixed;box-shadow:0 6px 18px #0000001f}.layer-info-card[hidden]{display:none}.layer-info-card .card-title{margin-bottom:6px;font-weight:600}.layer-info-card .card-row{gap:8px;margin:3px 0;display:flex}.layer-info-card .card-row .k{color:#86909c;flex-shrink:0;width:34px}.layer-info-card .card-row .v{word-break:break-all}.layer-info-card .card-download{color:#3370ff;border:1px solid #d0d3d9;border-radius:4px;margin-top:8px;padding:3px 10px;text-decoration:none;display:inline-block}.layer-info-card .card-download:hover{background:#e1eaff;border-color:#3370ff}.layer-item.preview{border:1px dashed #3370ff}.layer-item.root .name{font-weight:600}.layer-item.busy{opacity:.7;cursor:progress}.layer-item.busy .layer-id{color:#3370ff}.layer-item.confirm-row{cursor:default;background:#f7f8fa;border-radius:4px;flex-wrap:wrap;gap:6px;display:flex}.layer-item.confirm-row:hover{background:#f7f8fa}.confirm-input{color:#1f2329;min-width:0;font:inherit;background:#fff;border:1px solid #d0d3d9;border-radius:4px;flex:100%;padding:4px 6px;font-size:12px}.confirm-input:focus{border-color:#3370ff;outline:none}.confirm-input::placeholder{font-size:11px}.confirm-mode{color:#86909c;flex:100%;margin:0;font-size:11px;line-height:1.4}.confirm-ok,.confirm-cancel{color:#4e5969;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;flex:1;padding:4px 8px;font-size:12px}.confirm-cancel:hover{background:#f2f3f5}.confirm-ok{color:#fff;background:#3370ff;border-color:#3370ff}.confirm-ok:hover{background:#4a7dff}.gate-actions{gap:6px;display:flex}.gate-actions[hidden]{display:none}.gate-actions button{color:#4e5969;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;flex:1;padding:5px 4px;font-size:12px}.gate-actions button:hover{background:#f2f3f5}.gate-actions button:first-child{color:#fff;background:#3370ff;border-color:#3370ff}.gate-actions button:first-child:hover{background:#4a7dff}.history-list{flex-direction:column;flex:1;gap:6px;min-height:120px;margin:0;padding:8px;list-style:none;display:flex;overflow-y:auto}.history-item{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:10px;padding:8px;display:flex}.history-item:hover{background:#f2f3f5}.history-item.active{background:#e1eaff;border-color:#3370ff}.history-thumb{object-fit:cover;background:#f5f6f7;border:1px solid #e5e6eb;border-radius:4px;flex-shrink:0;width:44px;height:44px}.history-meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.history-label{justify-content:space-between;gap:6px;font-size:12px;font-weight:600;display:flex}.history-time{color:#86909c;flex-shrink:0;font-size:11px;font-weight:400}.history-prompt{color:#86909c;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.history-empty{color:#86909c;padding:12px 8px;font-size:12px}#split-confirm-bar{background:#e1eaff;border:1px solid #3370ff;border-radius:6px;padding:10px 12px}#split-confirm-bar[hidden]{display:none}.confirm-bar-title{color:#1f2329;align-items:center;gap:6px;font-size:13px;display:flex}.confirm-bar-title .dot{background:#3370ff;border-radius:50%;width:8px;height:8px;animation:1.6s ease-in-out infinite confirm-pulse}@keyframes confirm-pulse{50%{opacity:.35}}.confirm-bar-count{color:#4e5969;margin:6px 0 8px;font-size:12px}.layer-list.confirming{background:#f7faff}.icon-btn{color:#86909c;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.icon-btn:hover:not(:disabled){color:#1f2329;background:#e8eaed}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.add-element-btn{color:#4e5969;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;margin-left:auto;padding:2px 8px;font-size:11px;font-weight:400}.add-element-btn:hover:not(:disabled){color:#3370ff;background:#e1eaff;border-color:#3370ff}.add-element-btn:disabled{opacity:.4;cursor:not-allowed}.new-badge{letter-spacing:.5px;color:#fff;background:#f53f3f;border-radius:3px;flex-shrink:0;padding:0 4px;font-size:9px;font-weight:700;line-height:14px}.account-row{align-items:center;gap:6px;min-width:0;display:flex}.account-name{color:#4e5969;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.account-row a{color:#3370ff;flex-shrink:0;font-size:12px;text-decoration:none}.account-row a:hover{text-decoration:underline}#admin-link[hidden]{display:none}.sidebar-section .account-action{flex-shrink:0;padding:2px 6px;font-size:11px}.usage-status{color:#4e5969}.history-delete{color:#86909c;cursor:pointer;background:#fff;border:1px solid #d0d3d9;border-radius:4px;flex-shrink:0;padding:2px 5px;font-size:11px}.history-delete:hover:not(:disabled){color:#f53f3f;border-color:#f53f3f}.history-delete:disabled{opacity:.45;cursor:not-allowed}.auth-app{box-sizing:border-box;justify-content:center;align-items:center;padding:24px}.auth-card{background:#fff;border:1px solid #e5e6eb;border-radius:8px;width:min(360px,100%);padding:28px;box-shadow:0 8px 24px #1f232914}.auth-card h1{margin:0;font-size:20px;font-weight:600}.auth-description{color:#86909c;margin:8px 0 20px}.auth-form{flex-direction:column;gap:10px;display:flex}.auth-form label,.create-key-form label,.created-key-dialog label{color:#4e5969;font-size:12px;font-weight:600}.auth-form input,.create-key-controls input,.created-key-controls input{box-sizing:border-box;color:#1f2329;min-width:0;font:inherit;background:#fff;border:1px solid #d0d3d9;border-radius:4px;outline:none;padding:8px 10px}.auth-form input:focus,.create-key-controls input:focus,.created-key-controls input:focus{border-color:#3370ff;box-shadow:0 0 0 2px #3370ff1f}.auth-form button,.admin-nav button,.create-key-controls button,.created-key-controls button,.dialog-actions button,.key-actions button{color:#1f2329;cursor:pointer;font:inherit;background:#fff;border:1px solid #d0d3d9;border-radius:4px;padding:6px 12px}.auth-form button{color:#fff;background:#3370ff;border-color:#3370ff;margin-top:4px}.auth-form button:hover:not(:disabled){background:#4a7dff}.auth-form button:disabled,.admin-nav button:disabled,.create-key-controls button:disabled,.key-actions button:disabled{opacity:.45;cursor:not-allowed}.admin-app{display:block;overflow-y:auto}.admin-header{background:#fff;border-bottom:1px solid #e5e6eb;justify-content:space-between;align-items:center;gap:16px;padding:16px 24px;display:flex}.admin-header h1{margin:0;font-size:18px;font-weight:600}.admin-user{color:#86909c;text-overflow:ellipsis;white-space:nowrap;max-width:360px;margin:4px 0 0;overflow:hidden}.admin-nav{align-items:center;gap:10px;display:flex}.admin-nav a{color:#3370ff;text-decoration:none}.admin-nav a:hover{text-decoration:underline}.admin-main{box-sizing:border-box;max-width:1440px;margin:0 auto;padding:20px 24px 32px}.admin-content[hidden],.access-message[hidden],.admin-empty[hidden]{display:none}.access-message{text-align:center;background:#fff;border:1px solid #e5e6eb;border-radius:6px;padding:32px}.access-message h2{margin:0 0 8px;font-size:16px}.access-message p{color:#86909c;margin:0}.create-key-form{background:#fff;border:1px solid #e5e6eb;border-radius:6px;flex-direction:column;gap:8px;margin-bottom:16px;padding:12px;display:flex}.create-key-controls,.created-key-controls{gap:8px;display:flex}.create-key-controls input{width:280px}.admin-table-wrap{background:#fff;border:1px solid #e5e6eb;border-radius:6px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:1080px}.admin-table th,.admin-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #e5e6eb;padding:10px 12px}.admin-table th{color:#4e5969;background:#f7f8fa;font-size:12px;font-weight:600}.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr:hover{background:#f7f8fa}.admin-table .number-cell{font-variant-numeric:tabular-nums}.key-name-cell{text-overflow:ellipsis;max-width:200px;overflow:hidden}.key-prefix{color:#4e5969;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.key-enabled{color:#00b42a}.key-disabled{color:#f53f3f}.key-actions{gap:6px;display:flex}.key-actions button{padding:3px 8px;font-size:12px}.admin-empty{color:#86909c;text-align:center;margin:0;padding:24px}.created-key-dialog{box-sizing:border-box;color:#1f2329;border:0;border-radius:8px;width:min(480px,100% - 32px);padding:24px;box-shadow:0 12px 36px #1f232933}.created-key-dialog::backdrop{background:#1f232959}.created-key-dialog h2{margin:0 0 8px;font-size:17px}.created-key-dialog p{color:#4e5969}.created-key-dialog label{margin:16px 0 8px;display:block}.created-key-controls input{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dialog-actions{justify-content:flex-end;margin-top:16px;display:flex}
