:root{--fe-bg:var(--canvas, #FFFBEC)}.fe-overlay{position:fixed;inset:0;z-index:1000;background:rgba(20,15,5,.65);backdrop-filter:blur(5px);display:flex;align-items:stretch;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.fe-overlay.open{opacity:1;visibility:visible}.fe-overlay.open .fe-modal{transform:translateY(0) scale(1);opacity:1}.fe-modal{width:100vw;height:100vh;background:var(--surface,#f8f5e8);display:flex;flex-direction:column;transform:translateY(14px) scale(.99);opacity:0;transition:transform 240ms cubic-bezier(.2,.7,.3,1),opacity .2s ease}.fe-hdr{height:58px;background:var(--surface,#f8f5e8);border-bottom:1px solid var(--border,rgba(0,0,0,.1));display:flex;align-items:center;justify-content:space-between;padding:0 16px;gap:12px;flex-shrink:0}.fe-hdr-l{display:flex;align-items:center;gap:12px;min-width:0}.fe-hdr-r{display:flex;align-items:center;gap:10px;flex-shrink:0}.fe-title{font-size:15px;font-weight:700;color:var(--ink,#1f1a0b);margin:0;line-height:1.2}.fe-subtitle{font-size:12px;color:var(--ink-muted,#8b7355);display:block}.fe-icon-btn{width:36px;height:36px;border-radius:8px;border:none;background:0 0;color:var(--ink-soft,#5a4f2c);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .1s}.fe-icon-btn:hover{background:var(--surface-2,rgba(0,0,0,.06))}.fe-btn{height:36px;padding:0 16px;border-radius:8px;border:none;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .1s;white-space:nowrap}.fe-btn-primary{background:var(--primary,#5b7e3c);color:#fff}.fe-btn-primary:hover{filter:brightness(1.08)}.fe-btn-ghost{background:var(--surface-2,rgba(0,0,0,.06));color:var(--ink-soft,#5a4f2c)}.fe-btn-ghost:hover{background:var(--surface-3,rgba(0,0,0,.1))}.fe-edit-panel{display:none;align-items:center;gap:6px;background:var(--surface-2,rgba(0,0,0,.05));border:1px solid var(--border,rgba(0,0,0,.12));border-radius:8px;padding:4px 8px;animation:fe-slide-in 150ms ease}.fe-edit-panel.vis{display:flex}.fe-edit-lbl{font-size:12px;color:var(--ink-muted,#8b7355);white-space:nowrap;font-weight:500}.fe-edit-input{height:28px;padding:0 8px;border-radius:6px;border:1.5px solid var(--primary,#5b7e3c);background:var(--canvas,#fffbec);color:var(--ink,#1f1a0b);font-size:13px;font-weight:600;width:120px;outline:0}.fe-edit-input:focus{box-shadow:0 0 0 3px rgba(91,126,60,.2)}.fe-edit-ok{width:28px;height:28px;border-radius:6px;background:var(--primary,#5b7e3c);color:#fff;border:none;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:filter .1s}.fe-edit-ok:hover{filter:brightness(1.1)}@keyframes fe-slide-in{from{opacity:0;transform:translateX(8px)}to{opacity:1;transform:translateX(0)}}.fe-body{flex:1;display:flex;overflow:hidden}.fe-toolbar{width:72px;background:var(--surface,#f8f5e8);border-right:1px solid var(--border,rgba(0,0,0,.1));padding:10px 6px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;flex-shrink:0}.fe-tb-sec{display:flex;flex-direction:column;align-items:center;gap:3px}.fe-tb-lbl{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted,#8b7355);text-align:center;font-weight:700;padding:4px 0 2px}.fe-tb-div{height:1px;background:var(--border,rgba(0,0,0,.1));margin:6px 8px;width:48px}.fe-tb-btn{width:56px;height:52px;border-radius:10px;border:1.5px solid transparent;background:0 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:background .1s,border-color .1s,transform 80ms;color:var(--ink-soft,#5a4f2c)}.fe-tb-btn:hover{background:var(--surface-2,rgba(0,0,0,.06));border-color:var(--border,rgba(0,0,0,.1));color:var(--ink,#1f1a0b)}.fe-tb-add:hover{background:rgba(91,126,60,.1);border-color:var(--primary,#5b7e3c);color:var(--primary,#5b7e3c)}.fe-tb-btn.active{background:var(--primary,#5b7e3c);border-color:var(--primary,#5b7e3c);color:#fff}.fe-tb-flash{animation:fe-flash 280ms ease}@keyframes fe-flash{0%{background:var(--primary,#5b7e3c);color:#fff;transform:scale(.92)}60%{background:var(--primary,#5b7e3c);color:#fff;transform:scale(1.05)}100%{background:0 0;color:var(--ink-soft,#5a4f2c);transform:scale(1)}}.fe-tb-btn svg{width:20px;height:20px}.fe-tb-btn span{font-size:9px;font-weight:600;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:54px;text-align:center}.fe-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto;background:var(--surface-2,rgba(0,0,0,.04))}.fe-canvas-wrap{position:relative;border-radius:12px;overflow:visible;box-shadow:0 8px 40px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.1)}.fe-canvas{display:block;border-radius:12px;border:2px solid var(--border,rgba(0,0,0,.12));cursor:default}.fe-grid line{stroke:rgba(0,0,0,0.07);stroke-width:.5}.fe-el{cursor:move}.fe-empty-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none}.fe-empty-hint p{font-size:14px;color:var(--ink-muted,#8b7355);opacity:.6;margin:0;text-align:center;max-width:260px}.fe-del-btn{position:absolute;width:28px;height:28px;border-radius:50%;background:#dc2626;color:#fff;border:2.5px solid var(--surface,#f8f5e8);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.7);transition:opacity 150ms,transform 150ms;z-index:20;box-shadow:0 2px 8px rgba(0,0,0,.25)}.fe-del-btn.vis{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}.fe-del-btn:hover{transform:translate(-50%,-50%) scale(1.15);background:#b91c1c}.fe-rot-bar{display:none;align-items:center;gap:4px;background:var(--surface-2,rgba(0,0,0,.05));border:1px solid var(--border,rgba(0,0,0,.12));border-radius:8px;padding:4px 8px;animation:fe-slide-in 150ms ease}.fe-rot-bar.vis{display:flex}.fe-rot-lbl{font-size:11px;color:var(--ink-muted,#8b7355);font-weight:600;white-space:nowrap}.fe-rot-deg{min-width:34px;text-align:center;font-size:12px;font-weight:700;color:var(--primary,#5b7e3c);font-variant-numeric:tabular-nums}.fe-rot-btn{height:28px;padding:0 7px;border-radius:6px;border:1px solid var(--border,rgba(0,0,0,.12));background:var(--surface,#f8f5e8);color:var(--ink-soft,#5a4f2c);cursor:pointer;display:flex;align-items:center;gap:3px;font-size:11px;font-weight:600;transition:all 80ms}.fe-rot-btn:hover{background:var(--primary,#5b7e3c);color:#fff;border-color:var(--primary,#5b7e3c)}.fe-rot-btn-r svg{transform:scaleX(-1)}.fe-rot-reset{background:0 0;border-color:transparent;color:var(--ink-muted,#8b7355);padding:0 5px}.fe-rot-reset:hover{background:rgba(220,38,38,.1);color:#dc2626;border-color:rgba(220,38,38,.2)}.fe-ftr{height:48px;background:var(--surface,#f8f5e8);border-top:1px solid var(--border,rgba(0,0,0,.1));display:flex;align-items:center;justify-content:space-between;padding:0 16px;gap:8px;flex-shrink:0}.fe-ftr-info{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink-muted,#8b7355)}.fe-ftr-info strong{color:var(--ink-soft,#5a4f2c)}.fe-dot{opacity:.4}.fe-ftr-acts{display:flex;gap:6px}.fe-act-btn{height:30px;padding:0 10px;border-radius:7px;border:1px solid var(--border,rgba(0,0,0,.12));background:0 0;color:var(--ink-soft,#5a4f2c);font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .1s}.fe-act-btn:hover:not(:disabled){background:var(--surface-2,rgba(0,0,0,.06))}.fe-act-btn:disabled{opacity:.35;cursor:not-allowed}.fe-toast{position:fixed;bottom:72px;left:50%;transform:translateX(-50%) translateY(16px);background:var(--ink,#1f1a0b);color:var(--canvas,#fffbec);padding:9px 20px;border-radius:24px;font-size:13px;font-weight:500;opacity:0;pointer-events:none;transition:opacity 180ms,transform 180ms;z-index:1200;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.2)}.fe-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}@media (max-width:700px){.fe-toolbar{width:56px;padding:8px 4px}.fe-tb-btn{width:44px;height:44px}.fe-tb-btn svg{width:18px;height:18px}.fe-stage{padding:8px}.fe-canvas-wrap{transform:scale(.5);transform-origin:top left}.fe-edit-input{width:80px}}@media (min-width:701px) and (max-width:1050px){.fe-canvas-wrap{transform:scale(.7);transform-origin:center center}}