:root{--bg:#fff;--bg-raised:#f8f8fa;--surface:#f1f2f4;--surface-hover:#e8e9ed;--surface-active:#dfe0e5;--border:#d4d5db;--border-strong:#b8bac2;--border-subtle:#e4e5ea;--fg:#131419;--fg-secondary:#4e5264;--muted:#7e8290;--faint:#b0b3bd;--accent:#5468e0;--accent-hover:#4758cc;--accent-strong:#3d4cb8;--accent-bg:#5468e012;--accent-bg-hover:#5468e021;--success:#1a8f54;--success-bg:#1a8f5412;--warning:#b07818;--warning-bg:#b0781812;--error:#c93c3c;--error-bg:#c93c3c12;--info:#2e7db5;--info-bg:#2e7db512;--overlay:#0003;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 8px 32px #0000001a;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--text-xs:11px;--text-sm:13px;--text-base:15px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:36px;--text-4xl:42px;--leading-tight:1.2;--leading-normal:1.5;--leading-relaxed:1.7;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--duration-fast:.12s;--duration-normal:.2s;--duration-slow:.35s}[data-theme=dark]{--bg:#101114;--bg-raised:#141518;--surface:#1a1b1f;--surface-hover:#212229;--surface-active:#282a33;--border:#2c2d34;--border-strong:#3d3f48;--border-subtle:#232429;--fg:#e4e5e9;--fg-secondary:#a0a3ad;--muted:#5f6270;--faint:#43454f;--accent:#8a9dff;--accent-hover:#9dacff;--accent-strong:#7088ff;--accent-bg:#8a9dff14;--accent-bg-hover:#8a9dff24;--success:#5ec98f;--success-bg:#5ec98f14;--warning:#e0a855;--warning-bg:#e0a85514;--error:#e06565;--error-bg:#e0656514;--info:#60a5d6;--info-bg:#60a5d614;--overlay:#0000008c;--shadow-sm:0 1px 3px #00000040;--shadow-md:0 4px 16px #0000004d;--shadow-lg:0 8px 32px #00000059}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{color:var(--fg);background:#6ee7b740}.footer{flex-direction:row;height:28px}@media (max-width:640px){h1{font-size:32px!important}.footer{flex-direction:column;height:36px}}.gallery-action-button{border-radius:var(--radius-sm);border:1px solid var(--accent);background:var(--accent-bg);color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1001;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:background .15s,border-color .15s;display:flex;position:absolute}@media (max-width:768px){.project-card{height:100%}}
.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
