:root{--bg-color: #f3f4f6;--panel-bg: #ffffff;--paper-bg: #ffffff;--text-main: #18181b;--text-muted: #71717a;--accent: #2563eb;--accent-hover: #1d4ed8;--border: #e4e4e7;--border-focus: #3b82f6;--danger: #ef4444;--success: #10b981;--radius: 12px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-paper: 0 10px 25px -5px rgba(0, 0, 0, .12), 0 8px 10px -6px rgba(0, 0, 0, .08)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-main);min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:12px;-webkit-user-select:none;user-select:none}#app{width:100%;max-width:440px;display:flex;flex-direction:column;gap:14px}.app-header{display:flex;align-items:center;justify-content:space-between;padding:6px 4px}.header-left{display:flex;align-items:center;gap:10px}.back-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--panel-bg);color:var(--text-main);text-decoration:none;border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:all .15s ease}.back-btn:active{transform:scale(.94);background:#e4e4e7}.app-title{font-size:1.35rem;font-weight:800;letter-spacing:-.5px;display:flex;align-items:center;gap:6px}.toolbar-card{background:var(--panel-bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.toolbar-tools-row{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%}.btn-tool{display:inline-flex;align-items:center;justify-content:center;height:38px;min-width:38px;padding:0 9px;border-radius:8px;background:#f4f4f5;color:var(--text-main);border:1px solid transparent;font-size:.85rem;font-weight:600;cursor:pointer;transition:background-color .2s ease,color .2s ease,border-color .2s ease,padding .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease;overflow:hidden;white-space:nowrap;flex-shrink:0;-webkit-user-select:none;user-select:none}.btn-tool .tool-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.btn-tool svg{width:18px;height:18px}.btn-tool .text-icon{line-height:1}.btn-tool .tool-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;margin-left:0;transition:max-width .2s cubic-bezier(.4,0,.2,1),opacity .15s ease,margin-left .2s cubic-bezier(.4,0,.2,1)}.btn-tool:hover{background:#e4e4e7}.btn-tool:active{transform:scale(.95)}.btn-tool.active{background:#18181b;color:#fff;border-color:#18181b;box-shadow:0 1px 3px #0003;padding:0 12px}.btn-tool.active .tool-label{max-width:80px;opacity:1;margin-left:6px}.divider{width:1px;height:22px;background:var(--border);margin:0 2px;flex-shrink:0}.toolbar-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;padding-top:6px;border-top:1px solid var(--border)}.btn-action{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 12px;border-radius:8px;background:#f4f4f5;color:var(--text-main);border:1px solid var(--border);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .15s ease;-webkit-user-select:none;user-select:none}.btn-action svg{width:16px;height:16px}.btn-action:hover{background:#e4e4e7;border-color:#d4d4d8}.btn-action:active{transform:scale(.96)}#btn-tool-clear:hover{background:#fef2f2;color:#dc2626;border-color:#fecaca}#btn-export:hover{background:#eff6ff;color:#2563eb;border-color:#bfdbfe}.canvas-wrapper-outer{display:flex;flex-direction:column;align-items:center;position:relative}.canvas-paper-frame{width:384px;background:var(--paper-bg);border:1px solid #d4d4d8;border-radius:4px 4px 0 0;box-shadow:var(--shadow-paper);position:relative;overflow:hidden;touch-action:none}.thermal-canvas{display:block;width:384px;background:#fff;image-rendering:pixelated}.receipt-tear-top{width:384px;height:6px;background:radial-gradient(circle at 6px top,transparent 4px,#ffffff 4.5px);background-size:12px 6px;margin-bottom:-1px;position:relative;z-index:2}.canvas-resize-handle{width:384px;height:28px;background:#e4e4e7;border:1px solid #d4d4d8;border-top:none;border-radius:0 0 8px 8px;display:flex;align-items:center;justify-content:center;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;color:var(--text-muted);gap:6px;font-size:.75rem;font-weight:600}.resize-bar{width:36px;height:4px;border-radius:2px;background:#a1a1aa}.object-actions-bar{display:flex;align-items:center;justify-content:space-between;background:#18181b;color:#fff;border-radius:8px;padding:6px 12px;font-size:.8rem;margin-top:6px;width:384px}.object-actions-bar.hidden{display:none}.action-btns{display:flex;align-items:center;gap:8px}.btn-mini{background:#27272a;border:1px solid #3f3f46;color:#fff;padding:4px 8px;border-radius:6px;font-size:.75rem;font-weight:600;cursor:pointer}.btn-mini:hover{background:#3f3f46}.btn-mini.danger{background:#dc2626;border-color:#ef4444}.printer-control-card{background:var(--panel-bg);border:1px solid var(--border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}.status-row{display:flex;align-items:center;justify-content:space-between}.status-indicator{display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600}.status-dot{width:10px;height:10px;border-radius:50%;background:#9ca3af}.status-dot.connected{background:var(--success);box-shadow:0 0 0 3px #10b98133}.status-dot.connecting,.status-dot.printing{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b33;animation:pulse 1.5s infinite}.status-dot.error{background:var(--danger)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.main-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn-primary,.btn-secondary{display:flex;align-items:center;justify-content:center;gap:8px;height:46px;border-radius:10px;font-size:.95rem;font-weight:700;cursor:pointer;transition:all .15s ease}.btn-primary{background:var(--accent);color:#fff;border:none;box-shadow:0 4px 12px #2563eb40}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{background:#93c5fd;cursor:not-allowed;box-shadow:none}.btn-secondary{background:#f4f4f5;color:var(--text-main);border:1px solid var(--border)}.btn-secondary:hover{background:#e4e4e7}.btn-secondary.connected{background:#fee2e2;color:#dc2626;border-color:#fca5a5}.print-progress-container{display:flex;flex-direction:column;gap:6px;margin-top:4px}.progress-track{width:100%;height:8px;background:#e4e4e7;border-radius:4px;overflow:hidden}.progress-fill{height:100%;width:0%;background:var(--accent);transition:width .2s ease}.feedback-text{font-size:.8rem;color:var(--text-muted);text-align:center;min-height:18px}.feedback-text.success{color:var(--success);font-weight:600}.feedback-text.error{color:var(--danger);font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s ease}.modal-backdrop.open{opacity:1;pointer-events:auto}.sticker-drawer{width:100%;max-width:440px;background:var(--panel-bg);border-radius:20px 20px 0 0;padding:18px;box-shadow:0 -10px 30px #00000026;display:flex;flex-direction:column;gap:14px;max-height:70vh;transform:translateY(100%);transition:transform .25s cubic-bezier(.16,1,.3,1)}.modal-backdrop.open .sticker-drawer{transform:translateY(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between}.drawer-header h3{font-size:1.1rem;font-weight:700}.btn-close{background:#f4f4f5;border:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.stickers-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;overflow-y:auto;padding-bottom:20px}.sticker-tile{background:#f8fafc;border:1px solid var(--border);border-radius:10px;padding:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1.2;cursor:pointer;transition:all .15s ease}.sticker-tile:hover{background:#f1f5f9;border-color:var(--accent)}.sticker-tile:active{transform:scale(.92)}.sticker-tile svg{width:100%;height:100%;max-width:90px;max-height:60px}.app-footer{display:flex;justify-content:center;margin-top:6px;margin-bottom:20px}.btn-footer-about{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:.82rem;font-weight:600;padding:6px 14px;border-radius:20px;cursor:pointer;transition:all .15s ease}.btn-footer-about:hover{background:var(--panel-bg);color:var(--text-main);border-color:#cbd5e1}.about-dialog{border:none;border-radius:18px;padding:0;background:transparent;margin:auto;max-width:400px;width:90vw;box-shadow:0 20px 40px #0003}.about-dialog::backdrop{background:#00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dialog-card{background:var(--panel-bg);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:14px}.dialog-header{display:flex;align-items:center;justify-content:space-between}.dialog-header h2{font-size:1.25rem;font-weight:800}.dialog-body{font-size:.88rem;line-height:1.55;color:#3f3f46;max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.dialog-body h3{font-size:.95rem;font-weight:700;color:var(--text-main);margin-top:4px}.dialog-body ul,.dialog-body ol{padding-left:18px;display:flex;flex-direction:column;gap:4px}.dialog-footer{margin-top:6px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
