.canvas-container{width:100%;height:100%;overflow:hidden;position:relative}.canvas-container canvas{display:block}.toolbar{width:164px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:12px 10px;display:flex;flex-direction:column;gap:0;overflow-y:auto}.tool-section{display:flex;flex-direction:column;gap:6px;padding:8px 0}.section-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);font-weight:700}.tool-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:4px}.tool-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;font-size:.9rem;background:var(--surface);color:var(--text);border:1px solid var(--border);transition:background .12s,border-color .12s}.tool-btn:hover{background:var(--tool-hover);border-color:var(--accent-dark)}.tool-btn.active{background:var(--accent);border-color:var(--accent-dark);color:var(--accent-dark);font-weight:700;box-shadow:0 0 0 2px #9dff2059}.divider{height:1px;background:var(--border);margin:2px 0}.prop-row{display:flex;align-items:center;gap:6px}.prop-label{font-size:.75rem;color:var(--text-muted);min-width:32px}.prop-val{font-size:.7rem;color:var(--text-muted);min-width:26px;text-align:right}.action-row{display:flex;gap:4px}.action-btn{flex:1;padding:5px 4px;border-radius:5px;font-size:.75rem;font-family:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border);transition:background .12s,border-color .12s}.action-btn:hover{background:var(--tool-hover);border-color:var(--accent-dark)}.action-btn.wide{width:100%;flex:none}.action-btn.danger{color:#c0392b;border-color:#e8b4b0}.action-btn.danger:hover{background:#fde8e6;border-color:#c0392b}.ghost-btn{font-size:.7rem;padding:2px 5px;border-radius:4px;font-family:inherit;background:var(--surface);color:var(--text-muted);border:1px solid var(--border)}.ghost-btn.active-small{background:var(--accent);color:var(--accent-dark);border-color:var(--accent-dark);font-weight:600}.zoom-display{text-align:center;font-size:.8rem;color:var(--text-muted);padding:4px;background:var(--surface);border-radius:5px;border:1px solid var(--border)}.upload-modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px;width:460px;max-width:92vw}.modal-header h2{font-size:1.1rem;color:var(--text)}.dropzone{border:2px dashed var(--border);border-radius:10px;padding:36px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.drag-over{border-color:var(--accent-dark);background:#9dff2012}.drop-icon{font-size:2.5rem;margin-bottom:10px}.dropzone p{color:var(--text-muted);font-size:.9rem}.link{color:var(--accent-dark);text-decoration:underline;font-weight:500}.format-hint{font-size:.75rem;margin-top:8px;color:var(--text-muted);opacity:.7}.upload-tips{margin-top:18px;font-size:.8rem;color:var(--text-muted);background:var(--surface);border-radius:8px;padding:12px 14px}.upload-tips strong{color:var(--text);display:block;margin-bottom:6px}.upload-tips ul{padding-left:16px}.upload-tips li{margin:3px 0}.export-modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px;width:500px;max-width:92vw}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h2{font-size:1.1rem}.close-btn{background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px}.close-btn:hover{background:var(--border);color:var(--text)}.format-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:16px}.format-card{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;border-radius:8px;border:2px solid var(--border);background:var(--surface);cursor:pointer;transition:border-color .12s,background .12s}.format-card:hover{border-color:var(--accent-dark)}.format-card.selected{border-color:var(--accent-dark);background:#9dff2021}.fmt-ext{font-size:.85rem;font-weight:700;color:var(--accent-dark)}.fmt-label{font-size:.8rem;font-weight:600;color:var(--text)}.fmt-desc{font-size:.65rem;color:var(--text-muted);text-align:center;line-height:1.3}.quality-row{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--text-muted);margin-bottom:14px}.export-btn{width:100%;padding:12px;background:var(--accent);color:var(--accent-dark);border:1px solid var(--accent-dark);border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s}.export-btn:hover:not(:disabled){background:var(--accent-dim)}.export-btn:disabled{opacity:.5;cursor:not-allowed}.app{display:flex;flex-direction:column;height:100vh;background:var(--bg)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:54px;background:var(--panel);border-bottom:2px solid var(--accent);flex-shrink:0;z-index:10;box-shadow:0 2px 8px #345c0014}.header-left{display:flex;align-items:center;gap:12px}.logo-badge{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--accent-dark);border-radius:8px;color:var(--accent);font-weight:700;font-size:1rem;letter-spacing:-.5px;flex-shrink:0}.logo{font-size:1.15rem;font-weight:700;color:var(--accent-dark);letter-spacing:.3px}.logo-divider{width:1px;height:28px;background:var(--border);margin:0 2px}.logo-text-stack{display:flex;flex-direction:column;gap:0;line-height:1.15}.logo-sub{font-size:.73rem;font-weight:500;color:var(--text)}.logo-brand{font-size:.6rem;font-weight:400;color:var(--text-muted);letter-spacing:.04em}.header-right{display:flex;align-items:center;gap:8px}.header-btn{padding:6px 14px;border-radius:6px;font-size:.83rem;font-weight:500;background:var(--surface);color:var(--text);border:1px solid var(--border);transition:background .15s,border-color .15s;font-family:inherit}.header-btn:hover{background:var(--tool-hover);border-color:var(--accent-dark)}.header-btn.accent{background:var(--accent);border-color:var(--accent-dark);color:var(--accent-dark);font-weight:600}.header-btn.accent:hover{background:var(--accent-dim)}.header-btn.toggle-btn.active{background:var(--accent);border-color:var(--accent-dark);color:var(--accent-dark);font-weight:600}.header-btn.toggle-btn.active-amber{background:#fff5cc;border-color:#b38600;color:#7a5900;font-weight:600}.app-body{display:flex;flex:1;overflow:hidden}.canvas-area{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--canvas-bg);position:relative}.empty-state{text-align:center;color:#8aab6a}.empty-icon{font-size:3.5rem;margin-bottom:16px}.empty-state h2{font-size:1.35rem;color:#c8f08a;margin-bottom:8px;font-weight:600}.empty-state p{font-size:.88rem;margin-bottom:20px;color:#7a9a5c}.btn-primary{padding:10px 26px;background:var(--accent);color:var(--accent-dark);border:none;border-radius:8px;font-size:.95rem;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s}.btn-primary:hover{background:var(--accent-dim)}.processing-overlay{display:flex;flex-direction:column;align-items:center;gap:12px;color:#8aab6a;text-align:center;padding:0 24px}.processing-main{font-size:.95rem;font-weight:500;color:#c8f08a}.processing-sub{font-size:.78rem;color:#5a7a40;opacity:.85}.spinner{width:46px;height:46px;border:4px solid #2e4020;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--accent: #9DFF20;--accent-dark: #345C00;--accent-dim: #c6f56a;--bg: #F0F5EA;--panel: #ffffff;--surface: #EAF3DC;--border: #C8DBA8;--tool-hover: #DFF0BE;--tool-active: #9DFF20;--text: #111a08;--text-muted: #5a7040;--canvas-bg: #1a2216;font-family:DM Sans,Segoe UI,system-ui,sans-serif;color-scheme:light}body{background:var(--bg);color:var(--text);height:100vh;overflow:hidden}button{cursor:pointer;border:none;background:none;font-family:inherit}input[type=color]{cursor:pointer;border:1px solid var(--border);border-radius:4px;height:28px;width:36px;padding:2px;background:var(--panel)}input[type=range]{accent-color:var(--accent-dark);width:100%}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
