@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.8e0177b5.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.b97b3418.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.853070df.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_2ae47f08-module__h69qWW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_2ae47f08-module__h69qWW__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_eb58308d-module__w_p2Lq__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_eb58308d-module__w_p2Lq__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
html,body{max-width:100vw;overflow-x:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}*{box-sizing:border-box}a{color:inherit;text-decoration:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
:root{--bg-main:#f4f2ff;--bg-soft:#edf2ff;--text-main:#2f3568;--text-muted:#5f6590;--glass:#ffffff94;--glass-strong:#ffffffb8;--border:#8490c947;--accent-a:#7f8ef6;--accent-b:#6eb3ff}*{box-sizing:border-box}body{color:var(--text-main);background:radial-gradient(circle at 10% 18%,#eef1ff,transparent 45%),radial-gradient(circle at 90% 88%,#e2ebff,transparent 42%),linear-gradient(180deg,var(--bg-main),var(--bg-soft));margin:0;font-family:Inter,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}.portfolio-page{flex-direction:column;min-height:100dvh;padding-bottom:0;display:flex}.shell{width:min(1120px,100% - 40px);margin:0 auto}.glass-card{background:var(--glass);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:28px;box-shadow:0 10px 22px #6d78b51f}.navbar{z-index:40;margin:12px 0 22px;position:sticky;top:12px}.nav-content{background:var(--glass-strong);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:22px;padding:14px 20px;display:flex}.nav-brand{align-items:center;line-height:0;display:inline-flex}.nav-brand-logo{width:49px;height:auto;display:block}.nav-menu{flex:1;align-items:center;gap:22px;min-width:0;display:flex}.nav-toggle{cursor:pointer;background:#ffffffbd;border:1px solid #97a1d766;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:42px;height:42px;padding:0;display:none}.nav-toggle span{background:#4f5a9c;border-radius:999px;width:18px;height:2px;transition:transform .2s,opacity .2s}.nav-toggle.is-open span:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle.is-open span:nth-child(2){opacity:0}.nav-toggle.is-open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.nav-links{color:var(--text-muted);align-items:center;gap:22px;margin-left:auto;display:flex}.nav-links a:hover{color:var(--text-main)}.lang-switch{background:#ffffffbd;border:1px solid #97a1d766;border-radius:999px;align-items:center;gap:6px;padding:5px;display:inline-flex}.lang-switch-mobile{display:none}.lang-btn{color:#555e8a;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:8px 12px;font-size:.95rem;font-weight:600;line-height:1}.lang-btn.is-active{background:linear-gradient(135deg,var(--accent-b),var(--accent-a));color:#fff;box-shadow:0 4px 10px #7081ee42}.btn{border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:11px 22px;font-size:1rem;font-weight:500;line-height:1;transition:transform .2s,box-shadow .2s,background .2s;display:inline-flex}.btn-primary{color:#fff;background:linear-gradient(135deg,var(--accent-b),var(--accent-a));box-shadow:0 6px 14px #7081ee4d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 8px 16px #7081ee5c}.btn-secondary{color:var(--text-main);background:#ffffffa6;border-color:#919cd459}.btn.is-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.hero{border:1px solid var(--border);background:linear-gradient(130deg,#f6f3ffc7,#e8f0ffad);border-radius:36px;grid-template-columns:1fr;align-items:center;gap:36px;padding:44px 0;display:grid}.hero-left{padding:0 34px}.hero h1{margin:0;font-size:clamp(2.1rem,4.2vw,3.6rem);line-height:1.06}.hero-kicker{color:#454f96;margin:14px 0 0;font-size:clamp(1.1rem,2vw,1.9rem)}.hero-description{max-width:560px;color:var(--text-muted);margin:20px 0 0;font-size:1.1rem;line-height:1.5}.hero-cta{flex-wrap:wrap;gap:14px;margin-top:30px;display:flex}.hero-image-wrap{background:linear-gradient(150deg,#faf7ffb3,#e4edff9e);border:1px solid #ffffffa6;border-radius:28px;margin-right:22px;overflow:hidden}.hero-image{object-fit:cover;width:100%;height:clamp(260px,34vw,430px);display:block}.section{margin-top:24px}.section h2{margin:0;font-size:clamp(1.75rem,2.7vw,2.4rem)}.section-subtitle{color:var(--text-muted);margin:8px 0 0;font-size:1.05rem}.doing-section,.tech-stack-section{padding:24px 20px}.doing-section h2{text-align:center}.doing-pills{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:16px;display:flex}.doing-pills span{color:#454c73;white-space:nowrap;background:#ffffffb8;border:1px solid #97a1d759;border-radius:999px;padding:9px 16px;font-size:.98rem;font-weight:500;box-shadow:0 4px 8px #707ab617}.skills-marquee{width:100%;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.skills-track{flex:none;align-items:center;gap:12px;min-width:max-content;margin:0;padding:0 12px 0 0;list-style:none;animation:24s linear infinite skills-scroll-ltr;display:flex}.skills-track li{color:#454c73;white-space:nowrap;background:#ffffffb8;border:1px solid #97a1d759;border-radius:999px;padding:9px 16px;font-size:.98rem;font-weight:500;box-shadow:0 4px 8px #707ab617}.skills-marquee:hover .skills-track{animation-play-state:paused}@keyframes skills-scroll-ltr{0%{transform:translate(-100%)}to{transform:translate(0)}}.projects-wrap,.tools-wrap,.blog-wrap{padding:26px 20px}.blog-wrap h1{margin:0;font-size:clamp(1.9rem,3vw,2.5rem)}.blog-grid{max-width:980px;margin:22px auto 0}.blog-card{grid-template-columns:minmax(240px,34%) 1fr;align-items:stretch;gap:22px;padding:0;display:grid}.blog-card+.blog-card{border-top:1px solid #7c89be4d;margin-top:20px;padding-top:20px}.blog-card:last-child{margin-bottom:4px}.blog-card-media{background:linear-gradient(120deg,#5a6fc433,#598aff14);border-radius:0;min-height:170px;max-height:220px;position:relative;overflow:hidden}.blog-card-image{object-fit:cover;width:100%;height:100%;transition:transform .26s;display:block}.blog-card:hover .blog-card-image{transform:scale(1.025)}.blog-card-content{flex-direction:column;align-items:flex-start;gap:9px;padding:6px 0;display:flex}.blog-topic{letter-spacing:.12em;text-transform:uppercase;color:#7b849f;margin:0;font-size:.72rem;font-weight:700}.blog-date{color:#66708d;margin:0;font-size:.92rem;font-weight:600}.blog-card h2{max-width:32ch;margin:0;font-size:clamp(1.28rem,2vw,1.72rem);line-height:1.2}.blog-excerpt{max-width:62ch;color:var(--text-muted);margin:0;font-size:.98rem;line-height:1.55}.blog-card .blog-read-link{letter-spacing:.07em;text-transform:uppercase;color:#1f2a58;border-bottom:2px solid #1f2a5880;margin:1px 0 0;padding-bottom:4px;font-size:.88rem;font-weight:800;transition:color .18s,border-color .18s}.blog-card .blog-read-link:hover{color:#344aa8;border-color:#344aa8}.blog-note{max-width:980px;color:var(--text-muted);margin:18px auto 0}.blog-post-wrap{padding:26px 20px}.blog-post-breadcrumb{color:#667199;margin:0 0 12px;font-size:.92rem}.blog-post-breadcrumb a{color:#4f62b8}.blog-post-wrap h1{margin:0;font-size:clamp(1.9rem,3.4vw,2.7rem);line-height:1.15}.blog-post-meta{color:#6370a1;margin:10px 0 22px;font-size:.92rem;font-weight:600}.blog-post-wrap p{color:var(--text-muted);margin:0 0 14px;font-size:1rem;line-height:1.68}.blog-post-wrap h2{margin:26px 0 12px;font-size:clamp(1.35rem,2.3vw,1.85rem)}.blog-tool-list{gap:16px;margin:0;padding-left:20px;display:grid}.blog-tool-list h3{color:#3f4678;margin:0 0 8px;font-size:1.12rem}.blog-tool-list p{margin:0}.blog-tool-figure{width:min(100%,560px);margin:0 auto 12px}.blog-tool-image{background:#ffffffb3;border:1px solid #919cd452;border-radius:16px;width:100%;height:auto}.blog-faq{margin-top:8px}.tools-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:20px;display:grid}.tool-card{background:#ffffffa8;border:1px solid #919cd45c;border-radius:20px;flex-direction:column;gap:10px;padding:16px;display:flex}.tool-card h3{margin:0;font-size:1.2rem;line-height:1.2}.tool-card p{color:var(--text-muted);margin:0;font-size:.98rem;line-height:1.45}.tool-actions{margin-top:auto;padding-top:8px}.webp-wrap{padding:26px 20px}.avif-trust-row{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.avif-trust-pill{color:#57629a;letter-spacing:.04em;text-transform:uppercase;background:#f4f7ffeb;border:1px solid #7e92e83d;border-radius:999px;padding:8px 13px;font-size:.8rem;font-weight:700}.webp-tool-panel{background:#ffffffb3;border:1px solid #919cd457;border-radius:22px;margin-top:20px;padding:18px}.webp-tool-panel.is-headerless{margin-top:0}.webp-file-input{display:none}.webp-dropzone{color:#697286;text-align:center;cursor:pointer;background:#fffc;border:2px dashed #6eb3ff99;border-radius:14px;place-items:center;gap:8px;width:100%;min-height:116px;padding:14px;transition:border-color .2s,background .2s;display:grid}.webp-dropzone span:last-child{overflow-wrap:anywhere}.webp-dropzone.is-dragging{background:#ecf4ffeb;border-color:#7f8ef6e6}.webp-drop-icon{justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.webp-drop-icon svg{fill:#5a78f2;width:100%;height:100%}.webp-supported{color:var(--text-muted);margin:10px 2px 0;font-size:.86rem}.avif-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:12px;display:grid}.avif-settings-grid .webp-settings,.avif-color-panel{background:#f7faffd1;border:1px solid #919cd442;border-radius:16px;margin-top:0;padding:14px}.webp-settings{margin-top:12px}.webp-quality-label{color:#4d5a90;justify-content:space-between;align-items:baseline;gap:10px;font-size:.92rem;font-weight:600;display:flex}.webp-settings input[type=range]{accent-color:#6f8cf8;width:100%;margin-top:8px}.webp-quality-hint{color:var(--text-muted);margin:6px 0 0;font-size:.84rem}.avif-color-label{color:#4d5a90;justify-content:space-between;align-items:baseline;gap:10px;font-size:.92rem;font-weight:600;display:flex}.avif-color-picker-row{align-items:center;gap:12px;margin-top:10px;display:flex}.avif-color-input{cursor:pointer;background:0 0;border:0;width:54px;height:54px;padding:0}.avif-color-input::-webkit-color-swatch-wrapper{padding:0}.avif-color-input::-webkit-color-swatch{border:1px solid #919cd466;border-radius:16px}.avif-color-input::-moz-color-swatch{border:1px solid #919cd466;border-radius:16px}.avif-color-value{color:#5a6393;letter-spacing:.08em;background:#ffffffe6;border:1px solid #919cd442;border-radius:16px;justify-content:center;align-items:center;min-width:110px;height:54px;font-size:.86rem;font-weight:700;display:inline-flex}.avif-transparency-note{color:#5f6997;margin:12px 0 0;font-size:.88rem;line-height:1.5}.webp-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.webp-alert{color:#b33d44;margin:10px 0 0;font-size:.88rem;font-weight:600}.webp-empty{background:#ffffffa3;border:1px solid #95a0d84d;border-radius:16px;margin-top:16px;padding:18px}.webp-empty h3{margin:0 0 6px;font-size:1.06rem}.webp-empty p{color:var(--text-muted);margin:0}.webp-list{gap:12px;margin-top:16px;display:grid}.webp-item{background:#ffffffdb;border:1px solid #95a0da42;border-radius:16px;padding:14px}.webp-item-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.webp-item-head h3{overflow-wrap:anywhere;margin:0;font-size:1rem;line-height:1.35}.webp-status{color:#59628d;white-space:nowrap;background:#f6f9ffeb;border:1px solid #97a1d757;border-radius:999px;flex-shrink:0;padding:3px 10px;font-size:.75rem;font-weight:700}.webp-status.is-converting{color:#4b64cb;border-color:#7491f366}.webp-status.is-done{color:#2f7f5e;border-color:#42a67e6b}.webp-status.is-error{color:#b44141;border-color:#d1535373}.webp-item-previews{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px;display:grid}.webp-preview{background:#f6f9ffc7;border:1px solid #95a0d842;border-radius:12px;margin:0;overflow:hidden}.webp-preview img,.webp-preview-placeholder{aspect-ratio:16/10;width:100%}.webp-preview img{object-fit:contain;background:#fff;display:block}.webp-preview-placeholder{color:#7781ab;place-items:center;font-size:.88rem;font-weight:600;display:grid}.webp-preview figcaption{color:#667199;overflow-wrap:anywhere;border-top:1px solid #95a0d838;padding:8px 10px;font-size:.82rem}.webp-item-meta{color:#6a7399;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;font-size:.83rem;display:flex}.webp-item-meta span{overflow-wrap:anywhere}.webp-size-delta{font-weight:700}.webp-size-delta.is-saved{color:#2f7f5e}.webp-size-delta.is-larger{color:#b25b35}.webp-item-error{color:#b44141;margin:8px 0 0;font-size:.86rem;font-weight:600}.webp-item-actions{margin-top:10px}.webp-item-actions .btn{min-width:130px}.cropper-wrap{padding:26px 20px}.cropper-tool-panel{background:#ffffffb3;border:1px solid #919cd457;border-radius:22px;margin-top:20px;padding:18px}.cropper-tool-panel.is-headerless{margin-top:0}.cropper-file-input{display:none}.cropper-dropzone{color:#697286;text-align:center;cursor:pointer;background:radial-gradient(circle at 0 0,#e7f1ffcc,#0000 38%),linear-gradient(145deg,#ffffffeb,#f3f7ffe0);border:2px dashed #6eb3ff94;border-radius:18px;place-items:center;gap:10px;width:100%;min-height:148px;padding:20px;transition:border-color .2s,transform .2s,box-shadow .2s;display:grid}.cropper-dropzone:hover,.cropper-dropzone.is-dragging{border-color:#7f8ef6e0;transform:translateY(-1px);box-shadow:0 12px 28px #6c7edb24}.cropper-dropzone span:last-child{overflow-wrap:anywhere;max-width:34rem}.cropper-drop-icon{justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.cropper-drop-icon svg{fill:#5a78f2;width:100%;height:100%}.cropper-supported,.cropper-helper-note,.cropper-quality-note{color:var(--text-muted);margin:10px 2px 0;font-size:.88rem;line-height:1.5}.cropper-empty{background:#ffffffa3;border:1px solid #95a0d84d;border-radius:16px;margin-top:16px;padding:18px}.cropper-empty h3{margin:0 0 6px;font-size:1.06rem}.cropper-empty p{color:var(--text-muted);margin:0}.cropper-toolbar{gap:10px;display:grid}.cropper-toolbar-actions{flex-wrap:wrap;gap:10px;display:flex}.cropper-workbench{grid-template-columns:minmax(0,1.45fr) minmax(290px,.85fr);align-items:start;gap:16px;margin-top:16px;display:grid}.cropper-editor-card,.cropper-card{background:#fafcffdb;border:1px solid #919cd447;border-radius:20px;padding:14px}.cropper-workspace{background:linear-gradient(45deg,#ebf0ffd1 25%,#0000 25% 75%,#ebf0ffd1 75%) 0 0/32px 32px,linear-gradient(45deg,#ebf0ffd1 25%,#0000 25% 75%,#ebf0ffd1 75%) 16px 16px/32px 32px,linear-gradient(160deg,#fcfdfff5,#eff4ffeb);border-radius:18px;min-height:clamp(320px,55vw,540px);position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #95a0d838}.cropper-workspace.is-interacting,.cropper-selection{cursor:move}.cropper-image-stage{border-radius:14px;position:absolute;overflow:hidden;box-shadow:0 8px 18px #717bb224}.cropper-image-stage img{object-fit:contain;-webkit-user-select:none;user-select:none;background:#fff;width:100%;height:100%;display:block}.cropper-selection{touch-action:none;border:2px solid #fffffff0;border-radius:14px;position:absolute;box-shadow:0 0 0 9999px #181f3d73,0 12px 28px #171c362e}.cropper-selection.is-locked{border-color:#fffffffa}.cropper-selection-grid{border-radius:inherit;background-image:linear-gradient(90deg,#0000 33.333%,#fff6 33.333% 34.333%,#0000 34.333% 66.666%,#fff6 66.666% 67.666%,#0000 67.666%),linear-gradient(#0000 33.333%,#fff6 33.333% 34.333%,#0000 34.333% 66.666%,#fff6 66.666% 67.666%,#0000 67.666%);position:absolute;inset:0}.cropper-selection-size{color:#fff;letter-spacing:.02em;white-space:nowrap;background:#1b2342b8;border-radius:999px;padding:5px 9px;font-size:.74rem;font-weight:700;position:absolute;bottom:10px;right:10px}.cropper-handle{background:#fff;border:2px solid #4f6df5;border-radius:50%;width:16px;height:16px;padding:0;position:absolute;box-shadow:0 4px 10px #3e53b73d}.cropper-handle.is-nw,.cropper-handle.is-n,.cropper-handle.is-ne{top:-8px}.cropper-handle.is-sw,.cropper-handle.is-s,.cropper-handle.is-se{bottom:-8px}.cropper-handle.is-nw,.cropper-handle.is-w,.cropper-handle.is-sw{left:-8px}.cropper-handle.is-ne,.cropper-handle.is-e,.cropper-handle.is-se{right:-8px}.cropper-handle.is-n,.cropper-handle.is-s{left:calc(50% - 8px)}.cropper-handle.is-e,.cropper-handle.is-w{top:calc(50% - 8px)}.cropper-handle.is-nw,.cropper-handle.is-se{cursor:nwse-resize}.cropper-handle.is-ne,.cropper-handle.is-sw{cursor:nesw-resize}.cropper-handle.is-n,.cropper-handle.is-s{cursor:ns-resize}.cropper-handle.is-e,.cropper-handle.is-w{cursor:ew-resize}.cropper-stat-row{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.cropper-stat-chip{color:#5f6995;background:#f4f7ffeb;border:1px solid #919cd447;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:700}.cropper-sidebar{gap:12px;display:grid}.cropper-card-head h3{color:#425086;margin:0;font-size:1rem}.cropper-card-head p{color:var(--text-muted);margin:6px 0 0;font-size:.88rem;line-height:1.45}.cropper-chip-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.cropper-chip,.cropper-format{color:#4f5b8d;font:inherit;cursor:pointer;background:#ffffffeb;border:1px solid #919cd447;border-radius:14px;padding:11px 12px;font-size:.9rem;font-weight:700;transition:transform .2s,border-color .2s,box-shadow .2s}.cropper-chip:hover,.cropper-format:hover{border-color:#6f8cf86b;transform:translateY(-1px)}.cropper-chip.is-active,.cropper-format.is-active{color:#4052a5;background:linear-gradient(160deg,#edf3fffa,#e3ecfffa);border-color:#5772ee85;box-shadow:0 8px 18px #596fd024}.cropper-format-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.cropper-quality{margin-top:12px}.cropper-quality input[type=range]{accent-color:#6f8cf8;width:100%;margin-top:8px}.cropper-preview-frame{background:#f5f8fff0;border:1px solid #919cd442;border-radius:16px;margin-top:12px;overflow:hidden}.cropper-preview-frame img,.cropper-preview-placeholder{aspect-ratio:1;width:100%}.cropper-preview-frame img{object-fit:contain;background:#fff;display:block}.cropper-preview-placeholder{text-align:center;color:#7a82a7;place-items:center;padding:20px;font-size:.88rem;line-height:1.5;display:grid}.cropper-preview-meta{color:#667199;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;font-size:.84rem;display:flex}.text-tool-wrap{padding:26px 20px}.text-tool-panel{background:#ffffffb3;border:1px solid #919cd457;border-radius:22px;margin-top:20px;padding:18px}.text-tool-panel.is-headerless{margin-top:0}.text-tool-controls-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,.9fr);gap:14px;display:grid}.text-tool-settings-card{background:#f7faffd1;border:1px solid #919cd442;border-radius:16px;padding:14px}.text-tool-settings-card h3{color:#4d5a90;margin:0;font-size:.98rem}.text-tool-mode-list{gap:10px;margin-top:12px;display:grid}.text-tool-mode-option{cursor:pointer;background:#ffffffd6;border:1px solid #919cd43d;border-radius:14px;gap:4px;padding:12px;transition:border-color .2s,background .2s,transform .2s;display:grid}.text-tool-mode-option:hover{border-color:#6f8cf86b;transform:translateY(-1px)}.text-tool-mode-option.is-active{background:#eef4fff0;border-color:#6984f68f}.text-tool-mode-option input{opacity:0;pointer-events:none;position:absolute}.text-tool-mode-option span{color:#4d5a90;font-size:.92rem;font-weight:700}.text-tool-mode-option small{color:var(--text-muted);font-size:.83rem;line-height:1.45}.text-tool-toggle-list{gap:10px;margin-top:12px;display:grid}.text-tool-toggle{color:#4d5a90;background:#ffffffd6;border:1px solid #919cd43d;border-radius:14px;align-items:center;gap:10px;padding:12px 14px;font-size:.92rem;font-weight:600;display:flex}.text-tool-toggle input{accent-color:#6f8cf8;width:16px;height:16px}.text-tool-helper-note{color:var(--text-muted);margin:12px 0 0;font-size:.84rem;line-height:1.5}.text-tool-editors{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.text-tool-editor{background:#ffffffd1;border:1px solid #919cd442;border-radius:16px;flex-direction:column;gap:10px;padding:14px;display:flex}.text-tool-editor-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.text-tool-editor-head h3{margin:0;font-size:1rem}.text-tool-editor-head p{color:var(--text-muted);max-width:34rem;margin:4px 0 0;font-size:.84rem;line-height:1.45}.text-tool-stats{flex-wrap:wrap;gap:8px;display:flex}.text-tool-stat{color:#5f6995;white-space:nowrap;background:#f6f9ffeb;border:1px solid #919cd442;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:700}.text-tool-textarea{width:100%;min-height:260px;color:var(--text);resize:vertical;font:inherit;background:#f9fbffeb;border:1px solid #919cd44d;border-radius:14px;padding:14px;line-height:1.55}.text-tool-textarea:focus{outline-offset:2px;outline:2px solid #6f8cf852}.text-tool-textarea.is-output{background:#f4f8ffeb}.text-tool-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.text-tool-empty{background:#ffffffa3;border:1px solid #95a0d84d;border-radius:16px;margin-top:16px;padding:18px}.text-tool-empty h3{margin:0 0 6px;font-size:1.06rem}.text-tool-empty p{color:var(--text-muted);margin:0}.invoice-wrap{padding:26px 20px}.faq-wrap{padding:24px 20px}.faq-list{gap:10px;margin-top:16px;display:grid}.faq-item{background:#ffffffbd;border:1px solid #919cd457;border-radius:14px;padding:14px}.faq-item h3{color:#3b4676;margin:0;font-size:1rem}.faq-item p{color:var(--text-muted);margin:8px 0 0;line-height:1.5}.webp-faq-wrap{padding:24px 20px}.webp-faq-list{gap:10px;margin-top:16px;display:grid}.webp-faq-item{background:#ffffffbd;border:1px solid #919cd457;border-radius:14px;padding:14px}.webp-faq-item h3{color:#3b4676;margin:0;font-size:1rem}.webp-faq-item p{color:var(--text-muted);margin:8px 0 0;line-height:1.5}.invoice-faq-wrap{padding:24px 20px}.invoice-faq-list{gap:10px;margin-top:16px;display:grid}.invoice-faq-item{background:#ffffffbd;border:1px solid #919cd457;border-radius:14px;padding:14px}.invoice-faq-item h3{color:#3b4676;margin:0;font-size:1rem}.invoice-faq-item p{color:var(--text-muted);margin:8px 0 0;line-height:1.5}.invoice-builder-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:18px;margin-top:20px;display:grid}.invoice-editor-panel,.invoice-preview-panel{background:#ffffffb3;border:1px solid #919cd457;border-radius:22px;padding:18px}.invoice-block+.invoice-block{border-top:1px solid #95a0da3d;margin-top:18px;padding-top:18px}.invoice-block h3{margin:0 0 12px;font-size:1.08rem}.invoice-logo-upload{margin-bottom:12px}.invoice-logo-input{display:none}.invoice-logo-dropzone{color:#697286;text-align:center;cursor:pointer;background:#fffc;border:2px dashed #6eb3ff99;border-radius:14px;place-items:center;gap:8px;width:100%;min-height:112px;padding:14px;transition:border-color .2s,background .2s;display:grid}.invoice-logo-dropzone span:last-child{overflow-wrap:anywhere}.invoice-logo-dropzone.is-dragging{background:#ecf4ffeb;border-color:#7f8ef6e6}.invoice-upload-icon{justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.invoice-upload-icon svg{fill:#5a78f2;width:100%;height:100%}.invoice-logo-remove-btn{margin-top:8px}.invoice-form-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.invoice-field{flex-direction:column;gap:6px;display:flex}.invoice-field span{color:var(--text-muted);font-size:.82rem;font-weight:600}.invoice-field-full{grid-column:1/-1}.invoice-field input,.invoice-field select,.invoice-field textarea,.invoice-item-row input{width:100%;font:inherit;color:var(--text-main);background:#ffffffbd;border:1px solid #95a0d85c;border-radius:12px;padding:10px 12px}.invoice-field textarea{resize:vertical;min-height:70px}.invoice-field select{appearance:none}.invoice-items-list{gap:8px;display:grid}.invoice-item-row{grid-template-columns:minmax(0,2.2fr) minmax(0,.8fr) minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.invoice-remove-btn{border-radius:10px;padding:10px 12px}.invoice-add-btn{margin-top:10px}.invoice-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.invoice-download-btn{min-width:180px}.invoice-clear-btn{border-radius:10px}.invoice-preview-panel{position:sticky;top:86px}.invoice-preview-head h3{margin:0;font-size:1.1rem}.invoice-preview-doc{background:#fff;border:1px solid #95a0da42;border-radius:16px;gap:14px;margin-top:10px;padding:18px;display:grid;box-shadow:0 8px 18px #6d78b514}.invoice-preview-top{border-bottom:1px solid #95a0da38;justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:12px;display:flex}.invoice-preview-company{align-items:flex-start;gap:12px;min-width:0;display:flex}.invoice-preview-logo{object-fit:contain;max-width:78px;max-height:64px}.invoice-company-title{color:#2f3568;margin:4px 0 6px;font-size:1.18rem;line-height:1.2}.invoice-preview-company p{color:var(--text-muted);overflow-wrap:anywhere;margin:0;font-size:.9rem;line-height:1.35}.invoice-preview-doc-meta{text-align:right;min-width:240px;margin-left:auto}.invoice-doc-title{letter-spacing:.02em;color:#171a24;margin:0;font-size:2rem;font-weight:800;line-height:1}.invoice-doc-title-underline{background:linear-gradient(90deg,#6eb3ff,#7f8ef6);border-radius:999px;width:132px;height:4px;margin:10px 0 12px auto}.invoice-preview-doc-meta p{color:var(--text-muted);overflow-wrap:anywhere;margin:0 0 6px;font-size:.93rem}.invoice-preview-doc-meta p strong{color:#4d5574;font-weight:700}.invoice-preview-client h4{margin:4px 0 6px;font-size:1rem;line-height:1.2}.invoice-preview-client p,.invoice-preview-notes p{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.4}.invoice-label{color:#4f5a9c;text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.76rem;font-weight:700}.invoice-preview-client{border-bottom:1px solid #95a0da38;padding-bottom:10px}.invoice-preview-items table{border-collapse:collapse;width:100%}.invoice-preview-items th,.invoice-preview-items td{border-bottom:1px solid #95a0da2e;padding:10px 12px;font-size:.9rem}.invoice-preview-items th{color:#4f5a9c;text-align:left;background:#7f8ef61f;font-weight:700}.invoice-preview-items th:nth-child(n+2),.invoice-preview-items td:nth-child(n+2){text-align:right}.invoice-preview-items td:first-child{overflow-wrap:anywhere}.invoice-preview-totals{background:#7f8ef614;border:1px solid #919cd45c;border-radius:14px;gap:6px;width:min(320px,100%);margin-left:auto;padding:12px 14px;display:grid}.invoice-preview-totals p{justify-content:space-between;gap:12px;margin:0;font-size:.92rem;display:flex}.invoice-total-line{border-top:1px solid #95a0da3d;padding-top:8px}.invoice-total-line strong{color:#2f3568;font-size:1.18rem}.invoice-preview-amount-words{background:#7f8ef614;border-left:4px solid #7f8ef6d9;border-radius:8px;padding:10px 12px}.invoice-preview-amount-words p{color:#424d74;margin:0;font-size:.92rem;line-height:1.4}.invoice-preview-bank,.invoice-preview-notes{border-top:1px solid #95a0da38;padding-top:10px}.invoice-preview-bank p,.invoice-preview-notes p{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.4}.invoice-preview-footer{text-align:center;border-top:1px dashed #95a0da57;gap:4px;margin-top:4px;padding-top:12px;display:grid}.invoice-preview-footer p{color:#3f4b7a;margin:0;font-size:.96rem;font-weight:700}.invoice-preview-footer span{color:#69719a;font-size:.82rem}.resume-wrap{padding:26px 20px}.resume-wrap h1{margin:0}.tool-hero-section{margin-top:12px}.tool-hero-wrap{padding:22px 20px}.tool-hero-copy{gap:10px;display:grid}.tool-hero-kicker{color:#5d68a1;letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:700}.tool-hero-wrap h1{max-width:none;margin:0;font-size:clamp(1.9rem,3.7vw,2.85rem);line-height:1.02}.tool-hero-lead{color:var(--text-muted);max-width:100%;margin:0;font-size:.98rem;line-height:1.62}.tool-hero-points{flex-wrap:wrap;gap:8px;margin:2px 0 0;padding:0;list-style:none;display:flex}.tool-hero-points li{color:#52608f;background:#f8faffd6;border:1px solid #919cd43d;border-radius:999px;padding:8px 12px;line-height:1.35}.tool-jump-links{flex-wrap:wrap;gap:10px;display:flex}.tool-jump-links a{color:#5366b2;background:#f4f7ffeb;border:1px solid #7b8ce847;border-radius:999px;padding:9px 14px;font-size:.88rem;font-weight:700;text-decoration:none}.tool-related-wrap{padding:22px 20px}.tool-related-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}.tool-related-card{background:#f8faffd1;border:1px solid #919cd442;border-radius:18px;padding:14px;text-decoration:none}.tool-related-card h3{color:#3e4a80;margin:0;font-size:1rem}.tool-related-card p{color:var(--text-muted);margin:8px 0 0;line-height:1.55}.tool-guide-wrap{padding:26px 20px}.tool-guide-grid{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:start;gap:18px;margin-top:20px;display:grid}.tool-guide-content{gap:14px;display:grid}.tool-guide-card,.tool-howto-panel{background:#ffffffb8;border:1px solid #919cd457;border-radius:22px;padding:18px}.tool-guide-card h3,.tool-howto-panel h3,.tool-howto-step h4{margin:0}.tool-guide-card p,.tool-howto-panel>p,.tool-howto-step p{color:var(--text-muted);margin:10px 0 0;line-height:1.7}.tool-howto-list{gap:14px;margin:18px 0 0;padding-left:20px;display:grid}.tool-howto-step::marker{color:#5865a3;font-weight:700}.resume-seo-wrap{padding:26px 20px}.resume-seo-grid{grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);align-items:start;gap:18px;margin-top:20px;display:grid}.resume-seo-content{gap:14px;display:grid}.resume-seo-card,.resume-howto-panel{background:#ffffffb8;border:1px solid #919cd457;border-radius:22px;padding:18px}.resume-seo-card h3,.resume-howto-panel h3,.resume-howto-step h4{margin:0}.resume-seo-card p,.resume-howto-panel>p,.resume-howto-step p{color:var(--text-muted);margin:10px 0 0;line-height:1.7}.resume-howto-list{gap:14px;margin:18px 0 0;padding-left:20px;display:grid}.resume-howto-step::marker{color:#5865a3;font-weight:700}.resume-builder-grid{grid-template-columns:minmax(300px,.78fr) minmax(0,1.22fr);align-items:start;gap:18px;margin-top:20px;display:grid}.resume-editor-panel,.resume-preview-panel{background:#ffffffb3;border:1px solid #919cd457;border-radius:22px;padding:18px}.resume-preview-panel{position:sticky;top:96px}.resume-block+.resume-block{border-top:1px solid #95a0da3d;margin-top:18px;padding-top:18px}.resume-block h3{margin:0;font-size:1.08rem}.resume-block-head,.resume-list-head,.resume-preview-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.resume-block-head p{color:var(--text-muted);margin:8px 0 0;font-size:.92rem;line-height:1.45}.resume-save-badge,.resume-preview-head span{color:#5865a3;letter-spacing:.08em;text-transform:uppercase;background:#7081ee1f;border-radius:999px;align-self:flex-start;padding:7px 12px;font-size:.78rem;font-weight:700}.resume-template-switcher{flex-wrap:wrap;gap:10px;margin-top:0;display:flex}.resume-template-switcher .btn{min-width:118px;padding:9px 16px;font-size:.92rem}.resume-photo-upload{margin:0 0 16px}.resume-photo-input{display:none}.resume-photo-upload-card{background:linear-gradient(#fffffff2,#f3f6ffd1);border:1px solid #919cd457;border-radius:18px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;padding:14px;display:grid}.resume-photo-thumb{color:#6674af;text-align:center;background:#7081ee1a;border:1px solid #919cd447;border-radius:22px;justify-content:center;align-items:center;width:92px;height:92px;padding:8px;font-size:.82rem;font-weight:700;display:flex;overflow:hidden}.resume-photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.resume-photo-copy{gap:6px;display:grid}.resume-photo-copy strong{color:#43508c;font-size:.96rem}.resume-photo-copy p{color:var(--text-muted);margin:0;font-size:.88rem;line-height:1.45}.resume-photo-name{color:#5f6590;overflow-wrap:anywhere;font-size:.83rem}.resume-photo-actions{flex-wrap:wrap;gap:10px;display:flex}.resume-photo-actions .btn{min-width:0;padding:8px 14px;font-size:.9rem}.resume-form-grid,.resume-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.resume-field{gap:6px;display:grid}.resume-field span{color:#4c578c;font-size:.9rem;font-weight:600}.resume-field input,.resume-field textarea,.resume-skill-input-row input{width:100%;color:var(--text-main);font:inherit;background:#ffffffdb;border:1px solid #919cd457;border-radius:14px;padding:12px 13px}.resume-field textarea{resize:vertical;min-height:110px}.resume-field input:focus,.resume-field textarea:focus,.resume-skill-input-row input:focus{outline-offset:1px;border-color:#7f8ef68c;outline:2px solid #7f8ef633}.resume-field-full{grid-column:1/-1}.resume-skill-input-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.resume-skill-list{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.resume-skill-chip{color:#4a578d;cursor:pointer;background:#f3f6fff5;border:1px solid #919cd457;border-radius:999px;align-items:center;gap:10px;padding:9px 14px;display:inline-flex}.resume-block-empty{color:var(--text-muted);margin:12px 0 0}.resume-entry-list{gap:14px;margin-top:14px;display:grid}.resume-entry-card{background:linear-gradient(#fffffff5,#f2f6ffcc);border:1px solid #919cd457;border-radius:20px;padding:14px}.resume-checkbox{color:var(--text-muted);align-items:center;gap:10px;margin-top:20px;font-size:.9rem;font-weight:600;display:inline-flex}.resume-checkbox input{width:16px;height:16px}.resume-remove-btn{margin-top:14px}.resume-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.resume-actions .btn{min-width:150px}.resume-preview-head{margin-bottom:14px}.resume-preview-head h3{margin:0}.resume-preview-sheet{background:#fff;border:1px solid #8d99d447;border-radius:24px;overflow:hidden;box-shadow:0 18px 34px #6d78b51f}.resume-preview-sheet-classic{padding:30px 28px}.resume-preview-classic-header{text-align:left;border-bottom:1px solid #919cd43d;margin-bottom:18px;padding-bottom:18px}.resume-preview-classic-hero{justify-content:space-between;align-items:center;gap:18px;display:flex}.resume-preview-classic-copy{min-width:0}.resume-preview-classic-header h2,.resume-preview-split-hero h2{margin:0;font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.1}.resume-preview-classic-header p,.resume-preview-split-hero p{color:var(--text-muted);margin:8px 0 0;font-size:1rem}.resume-preview-inline-contact{flex-wrap:wrap;justify-content:flex-start;gap:8px 18px;margin-top:14px;display:flex}.resume-preview-inline-contact span{color:#5c6798;font-size:.92rem}.resume-preview-section+.resume-preview-section{margin-top:18px}.resume-preview-section h4{letter-spacing:.12em;text-transform:uppercase;color:#6573b2;margin:0 0 10px;font-size:.8rem}.resume-preview-section p{color:#54608e;margin:0;line-height:1.6}.resume-preview-empty{color:#8a91b6;font-style:italic}.resume-preview-entry-list{gap:14px;display:grid}.resume-preview-entry{border-top:1px solid #919cd42e;gap:8px;padding-top:14px;display:grid}.resume-preview-entry:first-child{border-top:0;padding-top:0}.resume-preview-entry-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.resume-preview-entry-head h5{color:#2f3568;margin:0;font-size:1rem}.resume-preview-entry-head p{color:#6b739b;margin:4px 0 0;font-size:.92rem}.resume-preview-entry-head span{white-space:nowrap;color:#5d68a0;background:#7180e81f;border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:700}.resume-preview-entry ul,.resume-preview-link-list{color:#55608f;gap:6px;margin:0;padding-left:18px;display:grid}.resume-preview-chip-list{flex-wrap:wrap;gap:8px;display:flex}.resume-preview-chip{color:#5663a4;background:#7081ee1f;border-radius:999px;align-items:center;padding:7px 11px;font-size:.86rem;font-weight:600;display:inline-flex}.resume-preview-link-list a,.resume-preview-contact-list a{color:#4f62b8;text-underline-offset:2px;overflow-wrap:anywhere;text-decoration:underline}.resume-preview-link-list span{color:#55608f;overflow-wrap:anywhere}.resume-preview-contact-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.resume-preview-contact-list span{color:#55608f;overflow-wrap:anywhere}.resume-preview-sheet-split{background:linear-gradient(#eef3ff 0 118px,#fff 118px 100%)}.resume-preview-split-hero{background:linear-gradient(135deg,#445896,#6782d2);justify-content:space-between;align-items:center;gap:18px;padding:28px;display:flex}.resume-preview-split-hero p{color:#ffffffdb}.resume-preview-split-hero-copy{min-width:0}.resume-preview-photo-frame{background:#fff;border:4px solid #ffffffeb;border-radius:26px;flex:none;width:104px;height:104px;overflow:hidden;box-shadow:0 10px 22px #5864a02e}.resume-preview-photo-frame img{object-fit:cover;width:100%;height:100%;display:block}.resume-preview-photo-frame-split{width:92px;height:92px}.resume-preview-split-grid{grid-template-columns:220px minmax(0,1fr);align-items:start;gap:20px;padding:24px;display:grid}.resume-preview-sidebar{background:#f4f7ff;border:1px solid #919cd43d;border-radius:18px;gap:14px;padding:16px;display:grid}.resume-preview-sidebar .resume-preview-section+.resume-preview-section{border-top:1px solid #919cd42e;margin-top:0;padding-top:14px}.resume-preview-main{min-width:0}@media (max-width:1120px){.cropper-workbench,.tool-guide-grid,.resume-builder-grid,.resume-seo-grid,.tool-related-list{grid-template-columns:1fr}.resume-preview-panel{position:static}}@media (max-width:900px){.resume-form-grid,.resume-entry-grid,.resume-preview-split-grid,.resume-skill-input-row,.resume-actions{grid-template-columns:1fr}.resume-actions{flex-direction:column;display:flex}.resume-actions .btn,.resume-skill-input-row .btn,.resume-template-switcher .btn{width:100%}.resume-preview-split-grid{padding:18px}.resume-photo-upload-card,.resume-preview-classic-hero,.resume-preview-split-hero{flex-direction:column;grid-template-columns:1fr;align-items:flex-start}}@media (max-width:720px){.resume-editor-panel,.resume-preview-panel,.resume-seo-card,.resume-howto-panel{padding:14px}.resume-preview-sheet-classic,.resume-preview-split-hero{padding:22px 18px}.resume-preview-entry-head,.resume-block-head,.resume-list-head,.resume-preview-head{flex-direction:column}.resume-preview-entry-head span{white-space:normal}}@media print{body *{visibility:hidden}#invoice-print-root,#invoice-print-root *{visibility:visible}#invoice-print-root{width:100%;box-shadow:none;border:0;margin:0;padding:0;position:absolute;top:0;left:0}}.project-marquee{cursor:grab;scrollbar-width:none;-ms-overflow-style:none;touch-action:pan-y;-webkit-user-select:none;user-select:none;gap:18px;width:100%;margin-top:20px;display:flex;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000)}.project-marquee::-webkit-scrollbar{display:none}.project-marquee.is-dragging{cursor:grabbing}.project-track{flex:none;align-items:stretch;gap:18px;min-width:max-content;display:flex}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:20px;display:grid}.project-card{background:#ffffffa8;border-radius:22px;flex-direction:column;height:100%;padding:12px;display:flex}.project-track .project-card{flex:0 0 clamp(270px,30vw,360px)}.project-card:hover{transform:translateY(-4px)}.project-thumb{aspect-ratio:16/9;object-fit:cover;border:1px solid #919cd45c;border-radius:16px;width:100%;height:auto;margin-bottom:14px;display:block}.thumb-a{background:linear-gradient(140deg,#9ed6ff,#978af2)}.thumb-b{background:linear-gradient(140deg,#ffd0a1,#f496be)}.thumb-c{background:linear-gradient(140deg,#95f0dd,#84b3ff)}.project-card h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.3em;margin:0;font-size:1.45rem;line-height:1.15;display:-webkit-box;overflow:hidden}.project-card .tech{color:#4f5a9c;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em;margin:8px 0 12px;font-size:.98rem;display:-webkit-box;overflow:hidden}.project-card p{color:var(--text-muted);margin:0;font-size:1rem;line-height:1.45}.project-description{-webkit-line-clamp:3;-webkit-box-orient:vertical;min-height:4.4em;display:-webkit-box;overflow:hidden}.project-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;padding-top:16px;display:grid}.project-actions-single{grid-template-columns:1fr}.contact-footer{background:linear-gradient(#f0ecffbf,#e5ecffe0);border-top:1px solid #95a0da4d;margin-top:38px;padding:26px 0 8px}.portfolio-page>.contact-footer{margin-top:auto}.contact-card{padding:24px 18px}.contact-card h2{margin:0}.contact-card p{color:var(--text-muted);margin:8px 0 0}.contact-form{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid;position:relative}.contact-field{gap:6px;display:grid}.contact-field-full,.contact-status,.contact-submit-row{grid-column:1/-1}.contact-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-main);font-size:.82rem;font-weight:700}.contact-form input,.contact-form textarea{width:100%;font:inherit;color:var(--text-main);background:#ffffffb8;border:1px solid #95a0d85c;border-radius:16px;padding:12px 14px}.contact-form input:focus-visible,.contact-form textarea:focus-visible{border-color:#617ed6b3;outline:none;box-shadow:0 0 0 4px #617ed624}.contact-form input[aria-invalid=true],.contact-form textarea[aria-invalid=true]{background:#fff5f5eb;border-color:#dc262680}.contact-form textarea{resize:vertical;min-height:120px}.contact-field-error{color:#b42318;margin:0;font-size:.86rem}.contact-status{border:1px solid #0000;border-radius:16px;margin:0;padding:12px 14px;font-size:.95rem}.contact-status.is-success{color:#166534;background:#22c55e1f;border-color:#22c55e47}.contact-status.is-error{color:#991b1b;background:#ef44441a;border-color:#ef44443d}.contact-submit-row{justify-content:flex-end;display:flex}.contact-submit-row .btn{min-width:200px}.contact-honeypot{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.footer-panel{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:linear-gradient(#ffffffad,#f3f7ffbd);border-top:1px solid #95a0da47;border-radius:22px 22px 0 0;margin-top:0;padding:18px 18px 10px}.footer-panel.has-top-spacing{margin-top:16px}.footer-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.footer-col h3,.footer-col h4{color:#3f4678;margin:0 0 8px;font-size:1rem;font-weight:600}.footer-col p,.footer-col a{color:#69719a;margin:0 0 6px;font-size:.9rem;line-height:1.35;display:block}.footer-col a:hover{color:#4c5585}.footer-meta{color:#7a82a7;border-top:1px solid #95a0da3d;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding-top:10px;font-size:.82rem;display:flex}@media (max-width:900px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-grid .footer-col:last-child{grid-column:1/-1}}@media (max-width:1024px){.hero{gap:20px;padding:30px 0}.hero-left{padding:0 24px}.project-grid,.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-grid,.invoice-builder-grid{grid-template-columns:1fr}.invoice-preview-panel{position:static}}@media (max-width:900px){.invoice-preview-top{flex-direction:column;gap:12px}.invoice-preview-doc-meta{text-align:left;width:100%;min-width:0;margin-left:0}.invoice-doc-title-underline{margin-left:0}.invoice-preview-totals{width:100%;margin-left:0}}@media (max-width:720px){.shell{width:min(1140px,100% - 24px)}.nav-content{border-radius:24px;flex-wrap:wrap;gap:10px;padding:12px 14px}.nav-brand{line-height:0}.nav-brand-logo{width:43px}.nav-toggle{border-radius:10px;width:38px;height:38px;margin-left:8px;display:inline-flex}.lang-switch-mobile{margin-left:auto;display:inline-flex}.lang-switch-desktop{display:none}.nav-menu{background:#ffffff73;border:1px solid #97a1d74d;border-radius:16px;flex-direction:column;flex:0 0 100%;align-items:stretch;gap:10px;width:100%;margin-top:4px;padding:12px;display:none}.nav-menu.is-open{display:flex}.nav-links{flex-direction:column;justify-content:flex-start;align-items:stretch;gap:2px;width:100%;margin-left:0}.nav-links a{background:0 0;border-radius:10px;width:100%;padding:10px 12px;font-weight:600}.nav-links a:hover{background:#ffffffb8}.nav-menu .btn-cv{border-radius:10px;align-self:flex-start;width:auto;min-width:0;padding:10px 14px;font-size:.95rem}.lang-switch-desktop{align-self:flex-start;margin-left:0}.hero h1{font-size:2rem}.hero-description{font-size:1.05rem}.hero-cta{flex-direction:column}.hero-cta .btn{width:100%}.skills-track li{padding:8px 14px;font-size:.9rem}.projects-wrap,.tools-wrap,.webp-wrap,.cropper-wrap,.text-tool-wrap,.faq-wrap,.webp-faq-wrap,.invoice-wrap,.invoice-faq-wrap,.resume-wrap,.tool-hero-wrap,.tool-related-wrap,.tool-guide-wrap,.resume-seo-wrap,.doing-section,.tech-stack-section{padding:24px 16px}.doing-pills span{padding:8px 14px;font-size:.9rem}.project-grid,.tools-grid,.blog-grid{grid-template-columns:1fr}.blog-card{grid-template-columns:1fr;gap:10px}.blog-card-content{gap:8px;padding:0 2px}.blog-card-media{min-height:190px;max-height:none}.blog-card h2{max-width:none;font-size:clamp(1.18rem,5.8vw,1.5rem)}.blog-card+.blog-card{margin-top:16px;padding-top:16px}.blog-post-wrap{padding:24px 16px}.invoice-form-grid{grid-template-columns:1fr}.invoice-editor-panel,.invoice-preview-panel{border-radius:18px;padding:16px}.invoice-preview-doc{gap:12px;padding:14px}.invoice-block h3{font-size:1rem}.invoice-logo-dropzone{min-height:100px;padding:12px}.invoice-upload-icon{width:34px;height:34px}.invoice-item-row{grid-template-columns:minmax(0,1fr) minmax(78px,.7fr) minmax(110px,.8fr)}.invoice-remove-btn{grid-column:1/-1;justify-self:flex-start}.invoice-preview-company{width:100%}.invoice-preview-logo{max-width:64px;max-height:54px}.invoice-company-title{font-size:1.05rem}.invoice-doc-title{font-size:1.6rem}.invoice-preview-items{-webkit-overflow-scrolling:touch;overflow-x:auto}.invoice-preview-items table{min-width:460px}.invoice-preview-items th,.invoice-preview-items td{padding:8px 10px;font-size:.84rem}.invoice-preview-items th:nth-child(n+2),.invoice-preview-items td:nth-child(n+2){white-space:nowrap}.invoice-preview-totals p{font-size:.88rem}.invoice-total-line strong{font-size:1.05rem}.invoice-actions{flex-direction:column}.invoice-actions .btn{width:100%}.webp-actions{flex-direction:column}.webp-actions .btn{width:100%}.text-tool-controls-grid,.text-tool-editors{grid-template-columns:1fr}.text-tool-actions{flex-direction:column}.text-tool-actions .btn{width:100%}.avif-settings-grid,.webp-item-previews{grid-template-columns:1fr}.webp-tool-panel,.cropper-tool-panel{padding:14px}.webp-dropzone{min-height:100px;padding:12px}.cropper-dropzone{min-height:120px;padding:14px}.webp-drop-icon,.cropper-drop-icon{width:34px;height:34px}.webp-item-head{flex-direction:column;align-items:flex-start}.webp-status{align-self:flex-start}.webp-item-meta{flex-direction:column;align-items:flex-start;gap:4px}.webp-item-actions .btn{width:100%}.cropper-toolbar-actions,.cropper-format-list,.cropper-chip-grid{flex-direction:column;grid-template-columns:1fr}.cropper-toolbar-actions .btn{width:100%}.cropper-workspace{min-height:320px}.cropper-preview-meta{flex-direction:column;align-items:flex-start}.project-actions{grid-template-columns:1fr}.project-actions .btn,.contact-form button{width:100%}.contact-form{grid-template-columns:1fr}.contact-submit-row{justify-content:stretch}.contact-submit-row .btn{width:100%}.footer-grid{grid-template-columns:1fr}.footer-grid .footer-col:last-child{grid-column:auto}.footer-meta{flex-direction:column;align-items:flex-start}}@media (max-width:560px){.tool-jump-links{flex-direction:column}.tool-jump-links a{text-align:center;width:100%}.webp-tool-panel,.cropper-tool-panel,.text-tool-panel{padding:12px}.avif-color-label,.webp-quality-label{font-size:.86rem}.text-tool-editor{padding:12px}.text-tool-editor-head{flex-direction:column;align-items:flex-start}.text-tool-textarea{min-height:220px;padding:12px}.webp-item,.cropper-editor-card,.cropper-card{padding:12px}.cropper-selection-size{font-size:.7rem;bottom:8px;right:8px}.webp-preview figcaption{padding:7px 8px;font-size:.78rem}.invoice-form-grid{gap:8px}.invoice-item-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.invoice-item-row input:nth-child(3){grid-column:1/-1}.invoice-preview-items table{min-width:410px}.invoice-doc-title{font-size:1.42rem}.invoice-preview-totals{padding:10px 12px}.invoice-preview-amount-words p{font-size:.86rem}.invoice-preview-footer p{font-size:.9rem}.invoice-preview-footer span{font-size:.78rem}}@media (max-width:480px){.nav-links{font-size:.92rem}.lang-switch-mobile{margin-left:auto}.lang-switch-desktop{margin-left:0}.invoice-preview-top{flex-direction:column}.invoice-preview-doc-meta{text-align:left;width:100%;min-width:0}.invoice-doc-title-underline{margin-left:0}.btn{padding:10px 16px}.hero-left{padding:0 16px}.contact-card,.footer-panel{padding-left:14px;padding-right:14px}.footer-panel{border-radius:18px 18px 0 0}}@media (prefers-reduced-motion:reduce){.skills-marquee,.project-marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.project-track{animation:none}.project-marquee .project-track:nth-child(2){display:none}}
