@keyframes marching-ants{0%{background-position:0 0,0 100%,0 0,100% 0}to{background-position:20px 0,-20px 100%,0 -20px,100% 20px}}:root{--rc-drag-handle-size: 12px;--rc-drag-handle-mobile-size: 24px;--rc-drag-handle-bg-colour: rgba(0, 0, 0, .2);--rc-drag-bar-size: 6px;--rc-border-color: rgba(255, 255, 255, .7);--rc-focus-color: #0088ff}.ReactCrop{position:relative;display:inline-block;cursor:crosshair;max-width:100%}.ReactCrop *,.ReactCrop *:before,.ReactCrop *:after{box-sizing:border-box}.ReactCrop--disabled,.ReactCrop--locked{cursor:inherit}.ReactCrop__child-wrapper{overflow:hidden;max-height:inherit}.ReactCrop__child-wrapper>img,.ReactCrop__child-wrapper>video{display:block;max-width:100%;max-height:inherit}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>img,.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>video{touch-action:none}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__crop-selection{touch-action:none}.ReactCrop__crop-mask{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;width:calc(100% + .5px);height:calc(100% + .5px)}.ReactCrop__crop-selection{position:absolute;top:0;left:0;transform:translateZ(0);cursor:move}.ReactCrop--disabled .ReactCrop__crop-selection{cursor:inherit}.ReactCrop--circular-crop .ReactCrop__crop-selection{border-radius:50%}.ReactCrop--circular-crop .ReactCrop__crop-selection:after{pointer-events:none;content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border:1px solid var(--rc-border-color);opacity:.3}.ReactCrop--no-animate .ReactCrop__crop-selection{outline:1px dashed white}.ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection){animation:marching-ants 1s;background-image:linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%);background-size:10px 1px,10px 1px,1px 10px,1px 10px;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;color:#fff;animation-play-state:running;animation-timing-function:linear;animation-iteration-count:infinite}.ReactCrop__crop-selection:focus{outline:2px solid var(--rc-focus-color);outline-offset:-1px}.ReactCrop--invisible-crop .ReactCrop__crop-mask,.ReactCrop--invisible-crop .ReactCrop__crop-selection{display:none}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{content:"";display:block;position:absolute;background-color:#fff6}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after{width:1px;height:100%}.ReactCrop__rule-of-thirds-vt:before{left:33.3333333333%}.ReactCrop__rule-of-thirds-vt:after{left:66.6666666667%}.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{width:100%;height:1px}.ReactCrop__rule-of-thirds-hz:before{top:33.3333333333%}.ReactCrop__rule-of-thirds-hz:after{top:66.6666666667%}.ReactCrop__drag-handle{position:absolute;width:var(--rc-drag-handle-size);height:var(--rc-drag-handle-size);background-color:var(--rc-drag-handle-bg-colour);border:1px solid var(--rc-border-color)}.ReactCrop__drag-handle:focus{background:var(--rc-focus-color)}.ReactCrop .ord-nw{top:0;left:0;transform:translate(-50%,-50%);cursor:nw-resize}.ReactCrop .ord-n{top:0;left:50%;transform:translate(-50%,-50%);cursor:n-resize}.ReactCrop .ord-ne{top:0;right:0;transform:translate(50%,-50%);cursor:ne-resize}.ReactCrop .ord-e{top:50%;right:0;transform:translate(50%,-50%);cursor:e-resize}.ReactCrop .ord-se{bottom:0;right:0;transform:translate(50%,50%);cursor:se-resize}.ReactCrop .ord-s{bottom:0;left:50%;transform:translate(-50%,50%);cursor:s-resize}.ReactCrop .ord-sw{bottom:0;left:0;transform:translate(-50%,50%);cursor:sw-resize}.ReactCrop .ord-w{top:50%;left:0;transform:translate(-50%,-50%);cursor:w-resize}.ReactCrop__disabled .ReactCrop__drag-handle{cursor:inherit}.ReactCrop__drag-bar{position:absolute}.ReactCrop__drag-bar.ord-n{top:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(-50%)}.ReactCrop__drag-bar.ord-e{right:0;top:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(50%)}.ReactCrop__drag-bar.ord-s{bottom:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(50%)}.ReactCrop__drag-bar.ord-w{top:0;left:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(-50%)}.ReactCrop--new-crop .ReactCrop__drag-bar,.ReactCrop--new-crop .ReactCrop__drag-handle,.ReactCrop--fixed-aspect .ReactCrop__drag-bar,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w{display:none}@media (pointer: coarse){.ReactCrop .ord-n,.ReactCrop .ord-e,.ReactCrop .ord-s,.ReactCrop .ord-w{display:none}.ReactCrop__drag-handle{width:var(--rc-drag-handle-mobile-size);height:var(--rc-drag-handle-mobile-size)}}:root{--bg: #f8f9fb;--card: #ffffff;--text: #222;--muted: #687076;--border: #e6e8eb;--accent: #0b5fff}:root.dark{--bg: #0b1220;--card: #0f172a;--text: #e2e8f0;--muted: #94a3b8;--border: #1e293b;--accent: #2b84ff}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";color:var(--text);background:var(--bg)}.container{max-width:880px;margin:0 auto;padding:20px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:0 10px 20px #00000008}h1,h2,h3{margin:0 0 12px}hr{border:none;border-top:1px solid var(--border);margin:24px 0}label.button,button{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:10px 14px;font-weight:600;cursor:pointer}button.secondary{background:#eef1ff;color:#243bff}button:disabled{opacity:.6;cursor:not-allowed}input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:16px}.canvas-wrap{width:100%;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff}.canvas-wrap canvas{display:block;width:100%;max-width:100%}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.gallery figure{margin:0;background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.gallery img{display:block;width:100%;height:160px;object-fit:cover}.gallery figcaption{padding:8px;font-size:12px;color:var(--muted)}.hidden{display:none}@keyframes lb-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lb-fade-out{0%{opacity:1}to{opacity:0}}@keyframes lb-scale-in{0%{transform:scale(.98)}to{transform:scale(1)}}@keyframes lb-scale-out{0%{transform:scale(1)}to{transform:scale(.98)}}.lightbox-backdrop{animation:lb-fade-in .2s ease forwards}.lightbox-backdrop.closing{animation:lb-fade-out .2s ease forwards}.lightbox-content{animation:lb-scale-in .2s ease forwards}.lightbox-backdrop.closing .lightbox-content{animation:lb-scale-out .2s ease forwards}.gallery-row{display:flex;gap:12px;overflow-x:auto;padding:6px 2px 12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;touch-action:pan-x;overscroll-behavior-x:contain;scrollbar-color:var(--border) transparent;scrollbar-width:thin}.gallery-row::-webkit-scrollbar{height:24px}.gallery-row::-webkit-scrollbar-track{background:transparent}.gallery-row::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.ReactCrop__drag-handle{background:#fff!important;border:1px solid #000!important;width:16px!important;height:16px!important}.ReactCrop__crop-selection{border:2px solid #4a90e2!important}.log-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:99999;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px}.log-panel{width:min(92vw,520px);height:44vh;background:#2b2b2b;color:#eaeaea;border:1px solid #3a3a3a;border-radius:12px;box-shadow:0 12px 24px #00000040;display:flex;flex-direction:column}.log-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #3a3a3a;background:#ffffff0a}.log-body{flex:1;margin:0;padding:12px;overflow:auto;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.4}.log-fab{position:fixed;left:12px;bottom:12px;z-index:99998;background:#6b7280;color:#fff;border:none;border-radius:999px;padding:10px 14px;font-weight:600;box-shadow:0 6px 16px #0003}.log-fab:active{transform:translateY(1px)}*{transition:background-color .2s ease,color .2s ease,border-color .2s ease}.theme-toggle{display:inline-flex;align-items:center;gap:8px;background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:8px 12px;font-weight:600;cursor:pointer}.theme-toggle:hover{background:#0000000a}.theme-toggle .icon{width:18px;height:18px;transition:opacity .15s ease,transform .15s ease}.theme-toggle .icon-hidden{opacity:0;position:absolute;transform:scale(.9)}.theme-toggle .toggle-label{font-size:12px;color:var(--muted)}
