:root{--bg: #ececec;--panel: #f5f5f5;--border: #d0d0d0;--fg: #1a1a1a;--muted: #666666;--accent: #2fbf5f;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--fg)}.app{display:flex;flex-direction:column;height:100%;position:relative}.menubar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--border);flex:0 0 auto}.menubar .brand-logo{width:20px;height:20px;display:block}.menubar-divider{width:1px;align-self:stretch;margin:4px 2px;background:var(--border)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;color:var(--fg);background:#fff;border:1px solid var(--border);border-radius:6px;cursor:pointer}.icon-btn:hover:not(:disabled){background:#e8e8e8}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn.active{background:#2fbf5f2e;border-color:var(--accent);color:var(--accent)}.colour-pill{display:inline-flex;align-items:stretch;height:30px;border:1px solid var(--border);border-radius:15px;overflow:hidden}.colour-pill-apply{display:inline-flex;align-items:center;justify-content:center;width:26px;padding:0;color:var(--fg);background:#fff;border:none;cursor:pointer}.colour-pill-apply:hover:not(:disabled){background:#e8e8e8}.colour-pill-apply:disabled{opacity:.4;cursor:default}.colour-pill-swatch{width:18px;padding:0;border:none;border-left:1px solid var(--border);cursor:pointer}.colour-pill-swatch:hover{box-shadow:0 0 0 2px #00000026 inset}.colour-swatch-glyph{font-size:15px;font-weight:700;line-height:1}.menubar .filename{margin-left:auto;color:var(--muted);font-size:13px}.stage{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0}.editor-canvas{display:block;width:100%;height:100%;touch-action:none}.empty-state{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted)}.empty-state .empty-logo{width:96px;height:96px;margin-bottom:16px}.empty-state h1{color:var(--fg);font-weight:600}.empty-state .empty-steps{max-width:440px;margin:0;padding:0;list-style:none;counter-reset:empty-step;text-align:left;font-size:14px;line-height:1.5}.empty-state .empty-steps li{counter-increment:empty-step;position:relative;padding-left:28px;margin-bottom:10px}.empty-state .empty-steps li:before{content:counter(empty-step);position:absolute;left:0;top:2px;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--accent);color:#fff;font-size:11px;font-weight:700}.inline-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;vertical-align:middle;transform:translateY(-2px);color:var(--fg);background:#fff;border:1px solid var(--border);border-radius:5px}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#2fbf5f1f;border:3px dashed var(--accent);font-size:18px;color:var(--fg);pointer-events:none}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ececec80;pointer-events:none}.spinner{width:48px;height:48px;border:5px solid rgba(0,0,0,.15);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.annotation-input{position:absolute;transform:translateY(-1px);background:#fffdf0;color:#111;border:1px solid var(--accent);border-radius:3px;padding:1px 4px;min-width:60px;font-family:inherit;line-height:1.2;z-index:20}.toolbar{display:flex;align-items:center;gap:4px}.text-size-control{display:inline-flex;align-items:center;gap:6px;margin-left:4px}.text-size-value{min-width:2em;color:var(--muted);font-size:12px;text-align:right}.error-toast{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:#dc3545;color:#fff;padding:10px 16px;border-radius:6px;cursor:pointer;max-width:80%;box-shadow:0 4px 16px #0000001a}.hidden-file-input,.hidden-color-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}
