:root{--bg:#eef0f4;--bg-sunken:#e6e9ee;--panel:#ffffff;--panel-2:#f7f8fa;--line:#e3e6eb;--line-strong:#d3d8e0;--ink:#1d2330;--ink-2:#4a5464;--ink-3:#7b8494;--accent:#2563eb;--accent-ink:#ffffff;--accent-soft:#eaf0ff;--danger:#e5484d;--danger-soft:#fdecec;--ok:#12805c;--warn:#b7791f;--radius:8px;--radius-sm:6px;--shadow-sm:0 1px 2px rgba(20,27,45,0.06),0 1px 3px rgba(20,27,45,0.04);--shadow-md:0 6px 18px rgba(20,27,45,0.1);--shadow-lg:0 18px 48px rgba(20,27,45,0.18);--topbar-h:56px;--rail-w:68px;--panel-w:300px;--font:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font);font-size:13px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer}svg{display:block}[hidden]{display:none !important}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#c8cdd7;border:3px solid transparent;border-radius:8px;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#aab2c0;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.topbar{position:relative;z-index:40;display:flex;align-items:center;gap:12px;height:var(--topbar-h);padding:0 14px 0 16px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:baseline;gap:8px;min-width:0;flex:0 0 auto}.brand-mark{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#2563eb 0%,#14b8a6 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,0.35);align-self:center}.brand-text{font-size:16px;font-weight:700;letter-spacing:0;align-self:center}.brand-sub{color:var(--ink-3);font-size:12px;align-self:center}.topbar-center{display:flex;align-items:center;gap:6px;margin:0 auto}.topbar-right{display:flex;align-items:center;gap:8px;flex:0 0 auto}.divider{width:1px;height:22px;background:var(--line);margin:0 4px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--ink-2);transition:background 0.14s ease,color 0.14s ease}.icon-btn svg{width:17px;height:17px}.icon-btn:hover{background:var(--panel-2);color:var(--ink)}.icon-btn:active{background:#ebeef3}.icon-btn[disabled]{opacity:0.35;cursor:not-allowed}.icon-btn[disabled]:hover{background:none}.icon-btn.is-danger:hover{color:var(--danger);background:var(--danger-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;white-space:nowrap;transition:background 0.14s ease,border-color 0.14s ease,color 0.14s ease}.btn svg{width:16px;height:16px}.btn-sm{height:30px;padding:0 9px}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:#1d4ed8}.btn-ghost{color:var(--ink-2)}.btn-ghost:hover{background:var(--panel-2);color:var(--ink)}.btn-outline{border:1px solid var(--line-strong);background:var(--panel);color:var(--ink-2)}.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn-danger-ghost{color:var(--danger)}.btn-danger-ghost:hover{background:var(--danger-soft)}.btn-block{width:100%}.zoom-group{display:flex;align-items:center;gap:2px;padding:2px 4px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}.zoom-group .icon-btn{width:26px;height:26px}.zoom-group .icon-btn svg{width:15px;height:15px}.zoom-value{min-width:48px;height:26px;border-radius:4px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-2)}.zoom-value:hover{background:var(--panel-2)}.app{display:grid;grid-template-columns:var(--rail-w) var(--panel-w) minmax(0,1fr) var(--panel-w);height:calc(100vh - var(--topbar-h));height:calc(100dvh - var(--topbar-h))}body.panels-hidden .app{grid-template-columns:var(--rail-w) 0 minmax(0,1fr) 0}body.panels-hidden .panel{display:none}.rail{display:flex;flex-direction:column;gap:2px;padding:10px 8px;background:var(--panel);border-right:1px solid var(--line);overflow-y:auto}.rail-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 2px 7px;border-radius:var(--radius-sm);color:var(--ink-3);font-size:11px;transition:background 0.14s ease,color 0.14s ease}.rail-btn svg{width:20px;height:20px}.rail-btn:hover{background:var(--panel-2);color:var(--ink)}.rail-btn.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.panel{background:var(--panel);overflow-y:auto;overscroll-behavior:contain}.panel-left{border-right:1px solid var(--line)}.panel-right{border-left:1px solid var(--line)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 14px 10px}.panel-head h3{margin:0;font-size:14px;font-weight:600}.panel-body{padding:0 14px 24px}.segmented{display:flex;gap:2px;padding:3px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.segmented button{flex:1 1 0;min-width:0;height:26px;padding:0 6px;border-radius:4px;font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background 0.14s ease,color 0.14s ease}.segmented button:hover{color:var(--ink)}.segmented button.is-active{background:var(--panel);color:var(--accent);font-weight:600;box-shadow:var(--shadow-sm)}.segmented-item{flex:1 1 0;min-width:0;height:26px;padding:0 6px;border-radius:4px;font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background 0.14s ease,color 0.14s ease}.segmented-item:hover{background:rgba(255,255,255,0.8);color:var(--ink)}.segmented-item.is-active{background:var(--panel);color:var(--accent);font-weight:600;box-shadow:var(--shadow-sm)}#emojiGroups{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:4px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.mobile-only{display:none !important}.chip-grid{display:flex;flex-wrap:wrap;gap:6px}.preset-chip{height:26px;padding:0 10px;border-radius:13px;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink-2);font-size:12px;white-space:nowrap;transition:border-color 0.14s ease,background 0.14s ease,color 0.14s ease}.preset-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.preset-chip.is-active{border-color:var(--accent);background:var(--accent);color:#fff}.upload-item{position:relative;display:block}.upload-item .tile{display:block}.upload-item .mini-btn{position:absolute;top:4px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(29,35,48,0.72);color:#fff;opacity:0;transition:opacity 0.14s ease,background 0.14s ease}.upload-item .mini-btn[data-upload-bg]{right:4px}.upload-item .mini-btn.is-danger{right:26px}.upload-item:hover .mini-btn,.upload-item:focus-within .mini-btn{opacity:1}.upload-item .mini-btn:hover{background:var(--accent)}.upload-item .mini-btn.is-danger:hover{background:var(--danger)}#emojiGroups .segmented-item{height:24px;font-size:11px}.tool-section{margin-top:16px}.tool-section:first-child{margin-top:0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12px;font-weight:600;color:var(--ink-2)}.section-title .count{font-weight:400;color:var(--ink-3)}.tile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tile-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.tile{position:relative;display:block;width:100%;aspect-ratio:1 / 1;padding:0;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel-2);transition:border-color 0.14s ease,box-shadow 0.14s ease,transform 0.14s ease}.tile img{width:100%;height:100%;object-fit:cover;display:block}.tile:hover{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.tile.is-wide{aspect-ratio:16 / 10}.tile .tile-label{position:absolute;left:0;right:0;bottom:0;padding:4px 6px;font-size:11px;color:#fff;text-align:left;background:linear-gradient(to top,rgba(12,16,28,0.72),rgba(12,16,28,0));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shape-tile{display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink-2);transition:border-color 0.14s ease,box-shadow 0.14s ease,color 0.14s ease}.shape-tile:hover{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);color:var(--accent)}.shape-tile svg{width:26px;height:26px}.emoji-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.emoji-btn{aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);font-size:22px;line-height:1;background:var(--panel-2);border:1px solid transparent;transition:background 0.14s ease,border-color 0.14s ease}.emoji-btn:hover{background:var(--accent-soft);border-color:var(--accent)}.swatch-row{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}.swatch{position:relative;aspect-ratio:1 / 1;border-radius:5px;border:1px solid rgba(20,27,45,0.12);transition:transform 0.14s ease,box-shadow 0.14s ease}.swatch:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.swatch.is-active{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--accent)}.swatch-checker{background-image:linear-gradient(45deg,#dfe3e9 25%,transparent 25%),linear-gradient(-45deg,#dfe3e9 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dfe3e9 75%),linear-gradient(-45deg,transparent 75%,#dfe3e9 75%);background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0;background-color:#fff}.gradient-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.gradient-tile{aspect-ratio:3 / 2;border-radius:var(--radius-sm);border:1px solid rgba(20,27,45,0.1)}.upload-drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 12px;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--ink-3);text-align:center;transition:border-color 0.14s ease,background 0.14s ease,color 0.14s ease}.upload-drop:hover,.upload-drop.is-over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.upload-drop svg{width:22px;height:22px}.upload-drop strong{font-size:13px;font-weight:600}.upload-drop span{font-size:11px}.preset-list{display:grid;gap:6px}.preset-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);text-align:left;transition:border-color 0.14s ease,background 0.14s ease}.preset-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.preset-btn .preset-preview{display:flex;align-items:center;justify-content:center;width:40px;height:30px;border-radius:5px;background:var(--panel-2);color:var(--ink);font-weight:700;overflow:hidden}.preset-btn .preset-meta{min-width:0;flex:1 1 auto}.preset-btn .preset-name{display:block;font-size:13px;font-weight:600}.preset-btn .preset-desc{display:block;font-size:11px;color:var(--ink-3)}.workspace{position:relative;display:flex;min-width:0;background:var(--bg);background-image:radial-gradient(rgba(120,132,154,0.18) 1px,transparent 1px);background-size:22px 22px}.stage{position:relative;flex:1 1 auto;min-width:0;overflow:auto;overscroll-behavior:contain}.stage-inner{display:flex;min-width:100%;min-height:100%;padding:40px}.board-wrap{position:relative;margin:auto;flex:0 0 auto;line-height:0;box-shadow:0 1px 2px rgba(20,27,45,0.08),0 12px 32px rgba(20,27,45,0.14);background-color:#fff;background-image:linear-gradient(45deg,#e9ecf1 25%,transparent 25%),linear-gradient(-45deg,#e9ecf1 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e9ecf1 75%),linear-gradient(-45deg,transparent 75%,#e9ecf1 75%);background-size:18px 18px;background-position:0 0,0 9px,9px -9px,-9px 0}.board-wrap.is-opaque{background-image:none;background-color:#fff}.layer{position:absolute;inset:0;width:100%;height:100%;display:block}#overlay{pointer-events:none}.board-wrap.is-space .layer{cursor:grab}.board-wrap.is-drop{outline:2px dashed var(--accent);outline-offset:4px}.text-input{position:absolute;margin:0;padding:0;border:0;outline:0;resize:none;overflow:hidden;background:transparent;transform-origin:0 0;white-space:pre;z-index:5;caret-color:var(--accent)}.text-input::selection{background:rgba(37,99,235,0.22)}.stage-hud{position:absolute;right:16px;bottom:16px;display:flex;align-items:center;gap:8px;pointer-events:none}.crop-bar{position:absolute;left:50%;top:14px;z-index:25;display:flex;align-items:center;gap:8px;padding:7px 8px 7px 14px;border-radius:22px;background:rgba(29,35,48,0.94);color:#fff;box-shadow:var(--shadow-md);transform:translateX(-50%)}.crop-bar .crop-title{font-size:12px;font-weight:600;white-space:nowrap}.crop-bar .crop-range{width:120px;accent-color:#fff}.crop-bar .crop-range::-webkit-slider-runnable-track{background:rgba(255,255,255,0.28)}.crop-bar .crop-range::-webkit-slider-thumb{border-color:#fff;background:#fff}.crop-bar .crop-value{min-width:38px;font-size:12px;font-variant-numeric:tabular-nums;color:rgba(255,255,255,0.8)}.crop-bar .btn-ghost{color:rgba(255,255,255,0.86)}.crop-bar .btn-ghost:hover{background:rgba(255,255,255,0.14);color:#fff}@media(max-width:900px){.crop-bar{left:8px;right:8px;transform:none;flex-wrap:wrap;justify-content:center}.crop-bar .crop-range{width:90px}}.stage-hud>*{pointer-events:auto}.size-chip{height:30px;display:inline-flex;align-items:center;padding:0 10px;border-radius:15px;background:rgba(255,255,255,0.94);border:1px solid var(--line);color:var(--ink-2);font-size:12px;font-variant-numeric:tabular-nums;box-shadow:var(--shadow-sm)}.hud-actions{display:flex;gap:4px;padding:3px;border-radius:16px;background:rgba(255,255,255,0.94);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.hud-actions .icon-btn{width:26px;height:26px;border-radius:50%}.selection-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:20px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600}.prop-group{padding:12px 14px;border-bottom:1px solid var(--line)}.prop-group:last-child{border-bottom:0}.prop-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;font-size:12px;font-weight:600;color:var(--ink-2)}.prop-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.prop-row:last-child{margin-bottom:0}.prop-row>label{flex:0 0 42px;color:var(--ink-3);font-size:12px}.field{display:block;margin-bottom:10px}.field:last-child{margin-bottom:0}.field>label{display:block;margin-bottom:5px;color:var(--ink-3);font-size:12px}.input,.select,.textarea{width:100%;min-width:0;height:32px;padding:0 9px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:13px;transition:border-color 0.14s ease,box-shadow 0.14s ease}.input:focus,.select:focus,.textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input[type="number"]{font-variant-numeric:tabular-nums}.textarea{height:auto;min-height:72px;padding:8px 9px;line-height:1.6;resize:vertical;font-family:inherit}.select{appearance:none;padding-right:26px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237b8494' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;background-size:14px}.input-sm{height:30px;padding:0 7px;font-size:12px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.input-wrap{position:relative;display:flex;align-items:center}.input-wrap>svg{position:absolute;left:8px;width:14px;height:14px;color:var(--ink-3);pointer-events:none}.input-wrap>.input{padding-left:27px}.color-input{display:flex;align-items:center;gap:8px}.color-chip{position:relative;display:inline-block;flex:0 0 auto;width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);overflow:hidden;cursor:pointer}.color-chip input[type="color"]{position:absolute;inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px);border:0;padding:0;background:none;cursor:pointer}.color-input .input{flex:1 1 auto;font-variant-numeric:tabular-nums;text-transform:uppercase}.toggle{display:inline-flex;align-items:center;gap:7px;cursor:pointer;color:var(--ink-2);font-size:12px}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle .track{position:relative;width:34px;height:20px;border-radius:10px;background:#d6dae2;transition:background 0.16s ease}.toggle .track::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform 0.16s ease}.toggle input:checked+.track{background:var(--accent)}.toggle input:checked+.track::after{transform:translateX(14px)}.toggle input:focus-visible+.track{box-shadow:0 0 0 3px var(--accent-soft)}input[type="range"]{appearance:none;width:100%;height:20px;background:none;cursor:pointer}input[type="range"]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:#dfe3ea}input[type="range"]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:var(--shadow-sm)}.range-row{display:flex;align-items:center;gap:8px}.range-row input[type="range"]{flex:1 1 auto}.range-value{flex:0 0 44px;text-align:right;color:var(--ink-2);font-size:12px;font-variant-numeric:tabular-nums}.icon-row{display:flex;gap:4px}.icon-row .icon-btn{width:32px;height:32px;border:1px solid var(--line);background:var(--panel)}.icon-row .icon-btn:hover{border-color:var(--accent)}.icon-row .icon-btn.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.icon-row .icon-btn svg{width:16px;height:16px}.btn-row{display:flex;gap:8px}.btn-row .btn{flex:1 1 0}.layer-list{display:grid;gap:4px;max-height:220px;overflow-y:auto}.layer-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid transparent;background:var(--panel-2);text-align:left;transition:border-color 0.14s ease,background 0.14s ease}.layer-item:hover{border-color:var(--line-strong)}.layer-item.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.layer-item svg{width:15px;height:15px;flex:0 0 auto}.layer-item .layer-name{flex:1 1 auto;min-width:0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-item .layer-toggle{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:4px;color:var(--ink-3)}.layer-item .layer-toggle:hover{background:rgba(20,27,45,0.08)}.hint{margin:8px 0 0;color:var(--ink-3);font-size:11px;line-height:1.6}.hint.is-warn{color:var(--warn)}.hint.is-error{color:var(--danger)}.hint.is-ok{color:var(--ok)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 16px;text-align:center;color:var(--ink-3)}.empty-state svg{width:28px;height:28px;color:var(--line-strong)}.empty-state strong{font-size:13px;color:var(--ink-2)}.empty-state p{margin:0;font-size:11px;line-height:1.7}.qr-preview{display:flex;align-items:center;justify-content:center;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2)}.qr-preview canvas{width:128px;height:128px;image-rendering:pixelated;border-radius:4px}.menu{position:fixed;z-index:60;min-width:196px;padding:6px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg)}.menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:var(--radius-sm);color:var(--ink-2);font-size:13px;text-align:left}.menu-item svg{width:15px;height:15px;color:var(--ink-3)}.menu-item:hover{background:var(--accent-soft);color:var(--accent)}.menu-item:hover svg{color:var(--accent)}.menu-sep{display:block;height:1px;margin:5px 4px;background:var(--line)}.popover{position:fixed;z-index:60;width:260px;padding:14px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg)}.popover h4{margin:0 0 12px;font-size:13px;font-weight:600}.popover-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.modal{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(20,27,45,0.44)}.modal-card{width:min(520px,100%);max-height:86vh;overflow-y:auto;padding:20px;border-radius:12px;background:var(--panel);box-shadow:var(--shadow-lg)}.modal-card h2{margin:0 0 6px;font-size:16px}.modal-card h3{margin:18px 0 8px;font-size:13px}.modal-card p{margin:0 0 10px;color:var(--ink-2);font-size:12px;line-height:1.7}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.shortcut-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.shortcut-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--panel-2);font-size:12px}kbd{padding:1px 6px;border-radius:4px;border:1px solid var(--line-strong);background:var(--panel);font-family:inherit;font-size:11px;color:var(--ink-2)}.toast-stack{position:fixed;left:50%;bottom:28px;z-index:90;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translateX(-50%);pointer-events:none}.toast{display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:20px;background:rgba(29,35,48,0.94);color:#fff;font-size:12px;box-shadow:var(--shadow-md);animation:toast-in 0.18s ease}.toast.is-error{background:rgba(229,72,77,0.96)}.toast.is-ok{background:rgba(18,128,92,0.96)}.toast svg{width:15px;height:15px}@keyframes toast-in{from{opacity:0;transform:translateY(6px)}}@media(max-width:1320px){:root{--panel-w:272px}}@media(max-width:1120px){:root{--panel-w:248px;--rail-w:60px}.brand-sub{display:none}.topbar-right .btn span{display:none}}@media(max-width:900px){.mobile-only:not([hidden]){display:inline-flex !important}.app{grid-template-columns:var(--rail-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.rail{order:3;grid-column:1 / -1;flex-direction:row;justify-content:space-around;padding:6px 8px 8px;border-right:0;border-top:1px solid var(--line);overflow-y:visible}.rail-btn{flex:1 1 0;padding:6px 2px 4px}.panel-left,.panel-right{position:absolute;top:var(--topbar-h);bottom:0;z-index:30;width:min(320px,86vw);box-shadow:var(--shadow-lg);transition:transform 0.2s ease}.panel-left{left:var(--rail-w);border-right:1px solid var(--line);transform:translateX(-110%)}.panel-left.is-open{transform:none}.panel-right{right:0;border-left:1px solid var(--line);transform:translateX(110%)}.panel-right.is-open{transform:none}body.panels-hidden .panel-left.is-open,body.panels-hidden .panel-right.is-open{display:block}.workspace{grid-column:1 / -1}.brand-text{font-size:15px}.topbar{padding:0 10px}.zoom-group #btnZoomFit,.topbar-center .divider:first-of-type{display:none}}@media(max-width:640px){:root{--topbar-h:52px;--rail-w:0px}.topbar{gap:6px}.brand-mark{width:20px;height:20px}.topbar-center{margin:0 auto}.topbar-right .btn{padding:0 8px}.stage-inner{padding:18px}.panel-left{left:0;width:min(320px,92vw)}.panel-right{width:min(320px,92vw)}.emoji-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*{animation-duration:0.001ms !important;transition-duration:0.001ms !important}}