- editor.css: removed duplicate sidebar CSS + :root vars (shared.css handles it) - Landing: removed features/advantages section - Removed Возможности link from all menus (landing, login, register, status, dashboard) - Sidebar divider: width 100% - Dashboard tiles: white bg (surface-800), lighter shadow on hover
158 lines
13 KiB
CSS
158 lines
13 KiB
CSS
*{margin:0;padding:0;box-sizing:border-box}
|
|
body{font-family:'Manrope',sans-serif;font-size:13px;background:var(--bg);color:var(--text-secondary);overflow:hidden;height:100vh;width:100vw;user-select:none}
|
|
input,select,button,textarea{font-family:inherit;font-size:inherit}
|
|
|
|
|
|
/* Main layout */
|
|
.editor-wrap{margin-left:56px;height:100vh;display:flex;flex-direction:column}
|
|
|
|
/* Toolbar */
|
|
.toolbar{height:44px;background:var(--surface-800);border-bottom:1px solid var(--surface-600);display:flex;align-items:center;padding:0 12px;gap:4px;flex-shrink:0;z-index:20}
|
|
.toolbar-group{display:flex;align-items:center;gap:2px}
|
|
.toolbar-sep{width:1px;height:24px;background:var(--surface-600);margin:0 6px}
|
|
.tb{width:34px;height:34px;border:none;border-radius:8px;background:transparent;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;position:relative}
|
|
.tb:hover{color:#fff;background:rgba(255,255,255,.08)}
|
|
.tb.active{color:var(--accent);background:var(--accent-bg)}
|
|
.tb:disabled{opacity:.3;cursor:default;pointer-events:none}
|
|
.tb svg{width:18px;height:18px}
|
|
.tb-label{font-size:11px;font-weight:500;padding:0 8px;white-space:nowrap}
|
|
.toolbar-right{margin-left:auto;display:flex;align-items:center;gap:4px}
|
|
|
|
/* Tool Options Bar */
|
|
.tool-options{height:36px;background:var(--surface-700);border-bottom:1px solid var(--surface-600);display:none;align-items:center;padding:0 12px;gap:8px;flex-shrink:0;z-index:19}
|
|
.tool-options.visible{display:flex}
|
|
.tool-options label{font-size:11px;color:var(--text-muted);white-space:nowrap}
|
|
.tool-options input[type="range"]{width:80px;accent-color:var(--accent);height:4px;cursor:pointer}
|
|
.tool-options input[type="number"]{width:60px;background:var(--surface-600);border:1px solid transparent;color:var(--text-secondary);padding:3px 6px;border-radius:5px;text-align:center;font-family:'JetBrains Mono',monospace;font-size:11px}
|
|
.tool-options input[type="number"]:focus{border-color:var(--accent);outline:none}
|
|
.tool-options select{background:var(--surface-600);border:1px solid transparent;color:var(--text-secondary);padding:3px 8px;border-radius:5px;cursor:pointer;font-size:11px}
|
|
.tool-options select:focus{border-color:var(--accent);outline:none}
|
|
.tool-options .opt-sep{width:1px;height:20px;background:var(--surface-600)}
|
|
.opt-btn{padding:3px 10px;border:1px solid var(--surface-600);border-radius:5px;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:11px;transition:all .15s}
|
|
.opt-btn:hover{border-color:var(--text-muted)}
|
|
.opt-btn.primary{background:var(--accent);color:#000;border-color:var(--accent);font-weight:600}
|
|
.opt-btn.primary:hover{background:var(--accent-dim)}
|
|
.opt-toggle{padding:3px 8px;border:1px solid var(--surface-600);border-radius:5px;background:transparent;color:var(--text-muted);cursor:pointer;font-size:11px;transition:all .15s}
|
|
.opt-toggle.on{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}
|
|
|
|
/* Viewport */
|
|
.viewport{flex:1;overflow:hidden;position:relative;background:#2c2c30}
|
|
.viewport-checker{display:none}
|
|
.canvas-container{position:absolute;transform-origin:0 0;cursor:crosshair;background:#2c2c30}
|
|
.canvas-container.has-transparency{background-image:linear-gradient(45deg,#444 25%,transparent 25%),linear-gradient(-45deg,#444 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#444 75%),linear-gradient(-45deg,transparent 75%,#444 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:#333}
|
|
.canvas-container canvas{position:absolute;top:0;left:0}
|
|
|
|
/* Drop zone */
|
|
.dropzone{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;cursor:pointer;transition:background .2s}
|
|
.dropzone:hover{background:rgba(0,84,230,0.03)}
|
|
.dropzone.drag-over{background:rgba(0,84,230,0.06);border:2px dashed var(--accent)}
|
|
.dropzone-icon{width:64px;height:64px;border-radius:16px;background:var(--surface-700);border:2px dashed var(--surface-600);display:flex;align-items:center;justify-content:center;margin-bottom:16px;transition:all .3s}
|
|
.dropzone:hover .dropzone-icon{border-color:var(--accent);background:var(--accent-bg)}
|
|
.dropzone-icon svg{color:var(--text-muted);width:28px;height:28px}
|
|
.dropzone-text{font-size:15px;color:var(--text-secondary);margin-bottom:6px;font-weight:500}
|
|
.dropzone-hint{font-size:12px;color:var(--text-muted)}
|
|
.dropzone.hidden{display:none}
|
|
|
|
/* Status Bar */
|
|
.statusbar{height:28px;background:var(--surface-800);border-top:1px solid var(--surface-600);display:flex;align-items:center;padding:0 12px;gap:16px;flex-shrink:0;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--text-secondary)}
|
|
.statusbar span{white-space:nowrap}
|
|
.status-accent{color:var(--accent)}
|
|
|
|
/* Export Modal */
|
|
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:200;display:none;align-items:center;justify-content:center}
|
|
.modal-overlay.visible{display:flex}
|
|
.modal{background:var(--surface-700);border:1px solid var(--surface-600);border-radius:12px;padding:24px;width:380px;max-width:90vw}
|
|
.modal h3{font-size:16px;color:var(--text-primary);margin-bottom:16px;font-weight:600}
|
|
.modal-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}
|
|
.modal-row label{font-size:12px;color:var(--text-muted);width:70px;flex-shrink:0}
|
|
.modal-row input,.modal-row select{flex:1;background:var(--surface-600);border:1px solid transparent;color:var(--text-secondary);padding:6px 10px;border-radius:6px;font-size:12px}
|
|
.modal-row input:focus,.modal-row select:focus{border-color:var(--accent);outline:none}
|
|
.modal-warning{font-size:11px;color:var(--warn);margin-bottom:12px;display:none}
|
|
.modal-warning.visible{display:block}
|
|
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
|
|
.modal-actions button{padding:6px 16px;border-radius:6px;border:1px solid var(--surface-600);background:transparent;color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:500;transition:all .15s}
|
|
.modal-actions button:hover{border-color:var(--text-muted)}
|
|
.modal-actions button.primary{background:var(--accent);color:#000;border-color:var(--accent)}
|
|
.modal-actions button.primary:hover{background:var(--accent-dim)}
|
|
|
|
/* Text overlay — Figma-style inline editor */
|
|
.text-overlay{position:absolute;z-index:15;display:none;pointer-events:auto;transform-origin:top left}
|
|
.text-editor{background:rgba(0,84,230,0.04);border:1.5px solid rgba(0,84,230,0.5);outline:none;padding:3px 6px;min-width:4px;min-height:1.2em;white-space:pre-wrap;word-break:break-word;cursor:text;caret-color:currentColor;user-select:text;-webkit-user-select:text;line-height:1.4;border-radius:3px;transition:border-color .15s}
|
|
.text-editor:focus{border-color:var(--accent);background:rgba(0,84,230,0.07);box-shadow:0 0 0 3px rgba(0,84,230,0.1)}
|
|
.text-editor:empty::before{content:'Введите текст…';color:rgba(255,255,255,0.25);pointer-events:none}
|
|
|
|
/* Tab Bar */
|
|
.tab-bar{height:30px;background:var(--surface-800);border-bottom:1px solid var(--surface-600);display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;flex-shrink:0;scrollbar-width:none;z-index:18}
|
|
.tab-bar::-webkit-scrollbar{display:none}
|
|
.tab-item{display:flex;align-items:center;gap:5px;padding:0 8px 0 12px;border-right:1px solid var(--surface-600);white-space:nowrap;cursor:pointer;font-size:11px;color:var(--text-muted);flex-shrink:0;max-width:160px;transition:color .15s;position:relative}
|
|
.tab-item:hover{color:var(--text-secondary);background:rgba(255,255,255,.03)}
|
|
.tab-item.active{color:var(--text-primary);background:var(--surface-700);border-bottom:2px solid var(--accent)}
|
|
.tab-name{flex:1;overflow:hidden;text-overflow:ellipsis;min-width:40px}
|
|
.tab-close{width:16px;height:16px;border:none;background:transparent;color:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px;flex-shrink:0;font-size:14px;line-height:1;padding:0;transition:all .15s}
|
|
.tab-item:hover .tab-close,.tab-item.active .tab-close{color:var(--text-muted)}
|
|
.tab-close:hover{color:var(--danger)!important;background:rgba(255,82,82,.12)}
|
|
.tab-add{width:32px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;border-right:1px solid var(--surface-600)}
|
|
.tab-add:hover{color:var(--text-secondary);background:rgba(255,255,255,.04)}
|
|
|
|
/* Color picker in toolbar */
|
|
.color-swatch{width:22px;height:22px;border-radius:6px;border:2px solid var(--surface-600);cursor:pointer;overflow:hidden;position:relative}
|
|
.color-swatch input{position:absolute;inset:-8px;width:calc(100% + 16px);height:calc(100% + 16px);cursor:pointer;opacity:0}
|
|
|
|
/* Crop overlay */
|
|
.crop-overlay{position:absolute;inset:0;z-index:12;display:none;pointer-events:none}
|
|
.crop-overlay.visible{display:block;pointer-events:auto}
|
|
.crop-handle{position:absolute;width:10px;height:10px;background:var(--accent);border:1px solid #000;border-radius:2px;cursor:pointer;z-index:13}
|
|
|
|
/* Context menu */
|
|
.ctx-menu{position:fixed;z-index:300;background:var(--surface-700);border:1px solid var(--surface-600);border-radius:10px;padding:4px;min-width:180px;box-shadow:0 8px 32px rgba(0,0,0,.5);display:none;backdrop-filter:blur(12px)}
|
|
.ctx-menu.visible{display:block}
|
|
.ctx-item{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:6px;cursor:pointer;color:var(--text-secondary);font-size:12px;white-space:nowrap;transition:background .1s}
|
|
.ctx-item:hover{background:rgba(255,255,255,.06);color:var(--text-primary)}
|
|
.ctx-item.disabled{opacity:.3;pointer-events:none}
|
|
.ctx-item svg{width:15px;height:15px;flex-shrink:0;color:var(--text-muted)}
|
|
.ctx-item:hover svg{color:var(--text-secondary)}
|
|
.ctx-item .ctx-shortcut{margin-left:auto;font-size:10px;color:var(--text-muted);font-family:'JetBrains Mono',monospace}
|
|
.ctx-sep{height:1px;background:var(--surface-600);margin:4px 8px}
|
|
|
|
/* Scrollbar */
|
|
::-webkit-scrollbar{width:6px;height:6px}
|
|
::-webkit-scrollbar-track{background:transparent}
|
|
::-webkit-scrollbar-thumb{background:var(--surface-600);border-radius:3px}
|
|
|
|
/* Layer Panel */
|
|
.layer-panel{position:absolute;right:12px;bottom:40px;width:240px;max-height:400px;background:var(--surface-800);border:1px solid var(--surface-600);border-radius:10px;z-index:15;display:none;flex-direction:column;backdrop-filter:blur(12px);overflow:hidden}
|
|
.layer-panel.visible{display:flex}
|
|
.layer-panel-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--surface-600);font-size:11px;font-weight:600;color:var(--text-primary)}
|
|
.layer-panel-actions{display:flex;gap:2px}
|
|
.lpa-btn{width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .15s;padding:0}
|
|
.lpa-btn:hover{color:var(--text-secondary);background:rgba(255,255,255,.06)}
|
|
.lpa-btn:disabled{opacity:.3;cursor:default;pointer-events:none}
|
|
.layer-list{flex:1;overflow-y:auto;padding:4px}
|
|
.layer-item{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:6px;cursor:pointer;transition:background .1s;user-select:none}
|
|
.layer-item:hover{background:rgba(255,255,255,.04)}
|
|
.layer-item.active{background:var(--accent-bg);outline:1px solid rgba(0,84,230,.3)}
|
|
.layer-item.drag-over-top{box-shadow:0 -2px 0 var(--accent)}
|
|
.layer-item.drag-over-bottom{box-shadow:0 2px 0 var(--accent)}
|
|
.layer-vis{width:20px;height:20px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;flex-shrink:0;font-size:12px;padding:0}
|
|
.layer-vis:hover{color:var(--text-secondary)}
|
|
.layer-vis.off{opacity:.3}
|
|
.layer-thumb{width:32px;height:32px;border-radius:4px;border:1px solid var(--surface-600);background-image:linear-gradient(45deg,#333 25%,transparent 25%),linear-gradient(-45deg,#333 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#333 75%),linear-gradient(-45deg,transparent 75%,#333 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0;flex-shrink:0;overflow:hidden;position:relative}
|
|
.layer-thumb canvas{width:100%;height:100%;display:block}
|
|
.layer-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
|
|
.layer-name{font-size:11px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
.layer-name-input{font-size:11px;color:var(--text-secondary);background:var(--surface-600);border:1px solid var(--accent);border-radius:3px;padding:1px 4px;outline:none;width:100%;font-family:inherit}
|
|
.layer-meta{font-size:9px;color:var(--text-muted);font-family:'JetBrains Mono',monospace}
|
|
.layer-props{padding:6px 10px;border-top:1px solid var(--surface-600);display:flex;flex-direction:column;gap:5px}
|
|
.layer-props label{font-size:10px;color:var(--text-muted)}
|
|
.layer-props select{background:var(--surface-600);border:1px solid transparent;color:var(--text-secondary);padding:3px 6px;border-radius:4px;font-size:10px;cursor:pointer;width:100%;font-family:inherit}
|
|
.layer-props select:focus{border-color:var(--accent);outline:none}
|
|
.layer-props input[type="range"]{width:100%;accent-color:var(--accent);height:3px}
|
|
.lp-row{display:flex;align-items:center;gap:6px}
|
|
.lp-row label{width:55px;flex-shrink:0}
|
|
.lp-row span{font-size:10px;color:var(--text-muted);font-family:'JetBrains Mono',monospace;width:28px;text-align:right;flex-shrink:0}
|
|
|
|
@media(max-width:640px){
|
|
|
|
.editor-wrap{margin-left:0;height:calc(100vh - 52px)}
|
|
}
|