:root{--bg: #F8FAFC;--surface: #FFFFFF;--surface-2: #F1F5F9;--ink: #0F172A;--ink-2: #475569;--ink-3: #94A3B8;--line: #E2E8F0;--primary: #4F46E5;--primary-ink: #FFFFFF;--primary-soft: #EEF2FF;--accent: #06B6D4;--ok: #0E9F6E;--warn: #D97706;--err: #DC2626;--radius: 14px;--radius-lg: 20px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow: 0 4px 16px rgba(15, 23, 42, .07), 0 1px 3px rgba(15, 23, 42, .05);--shadow-lg: 0 12px 40px rgba(15, 23, 42, .12);--font-display: "Sora", "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--max: 1180px}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.18;margin:0 0 .5em;letter-spacing:-.015em}h1{font-size:clamp(1.9rem,4.5vw,3rem);font-weight:700}h2{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:700}h3{font-size:1.15rem;font-weight:600}p{margin:0 0 1em}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}img,svg,canvas{max-width:100%;height:auto}button{font-family:inherit}.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.sr-only:focus{position:fixed;top:8px;left:8px;width:auto;height:auto;padding:10px 16px;background:var(--primary);color:#fff;border-radius:8px;z-index:100;clip:auto}.site-header{position:sticky;top:0;z-index:50;background:#ffffffd9;backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.site-header .bar{display:flex;align-items:center;gap:18px;height:64px}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:1.18rem;color:var(--ink)}.brand:hover{text-decoration:none}.brand .mark{width:34px;height:34px;flex:none}.brand b{color:var(--primary);font-weight:700}.nav-links{display:flex;align-items:center;gap:4px;margin-left:auto}.nav-links a{color:var(--ink-2);font-size:.92rem;font-weight:500;padding:8px 12px;border-radius:8px}.nav-links a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.lang-switch{margin-left:6px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;font-size:.85rem;font-weight:600;color:var(--ink-2);background:var(--surface)}.lang-switch:hover{border-color:var(--primary);color:var(--primary);text-decoration:none}@media (max-width: 720px){.nav-links a:not(.lang-switch){display:none}}.privacy-ribbon{background:linear-gradient(90deg,#4f46e5,#06b6d4);color:#fff;text-align:center;font-size:.82rem;font-weight:500;padding:7px 16px}.privacy-ribbon svg{vertical-align:-2px;margin-right:6px}.hero{position:relative;padding:64px 0 36px;text-align:center;overflow:hidden}.hero:before{content:"";position:absolute;inset:-40% -20% auto;height:150%;background:radial-gradient(600px 300px at 25% 20%,rgba(79,70,229,.1),transparent 70%),radial-gradient(700px 320px at 75% 15%,rgba(6,182,212,.1),transparent 70%);pointer-events:none}.hero>*{position:relative}.hero h1{max-width:800px;margin-left:auto;margin-right:auto}.hero .sub{max-width:660px;margin:14px auto 0;color:var(--ink-2);font-size:clamp(1rem,2vw,1.18rem)}.hero .badges{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:22px}.badge{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:.85rem;font-weight:600;color:var(--ink-2);box-shadow:var(--shadow-sm)}.badge svg{color:var(--ok);flex:none}.cat-section{padding:26px 0 8px}.cat-head{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}.cat-head h2{margin:0;font-size:1.3rem}.cat-head .blurb{color:var(--ink-3);font-size:.9rem}.tool-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(245px,1fr))}.tool-card{display:flex;gap:14px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;color:var(--ink)}.tool-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--tc, var(--primary)) 45%,var(--line));text-decoration:none}.tool-card .ic{flex:none;width:44px;height:44px;border-radius:11px;display:grid;place-items:center;background:color-mix(in srgb,var(--tc, var(--primary)) 10%,#fff);color:var(--tc, var(--primary))}.tool-card .ic svg{width:24px;height:24px}.tool-card h3{margin:1px 0 3px;font-size:1rem}.tool-card p{margin:0;color:var(--ink-2);font-size:.85rem;line-height:1.45}.tool-hero{text-align:center;padding:40px 0 10px}.tool-hero .crumb{font-size:.85rem;color:var(--ink-3);margin-bottom:14px}.tool-hero .crumb a{color:var(--ink-3)}.tool-hero .intro{max-width:740px;margin:12px auto 0;color:var(--ink-2)}.tool-app{max-width:860px;margin:28px auto 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:26px}.dropzone{border:2px dashed color-mix(in srgb,var(--tc, var(--primary)) 45%,var(--line));background:color-mix(in srgb,var(--tc, var(--primary)) 4%,#fff);border-radius:var(--radius);padding:44px 22px;text-align:center;cursor:pointer;transition:background .15s,border-color .15s}.dropzone:hover,.dropzone.drag{background:color-mix(in srgb,var(--tc, var(--primary)) 9%,#fff);border-color:var(--tc, var(--primary))}.dropzone .dz-ic{color:var(--tc, var(--primary));margin-bottom:10px}.dropzone .dz-main{font-weight:600;font-size:1.05rem}.dropzone .dz-sub{color:var(--ink-3);font-size:.85rem;margin-top:4px}.dropzone input{display:none}.file-list{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}.file-item{display:flex;align-items:center;gap:10px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:.9rem}.file-item .fi-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.file-item .fi-size{color:var(--ink-3);font-size:.8rem;flex:none}.file-item button{flex:none;border:0;background:none;cursor:pointer;color:var(--ink-3);width:28px;height:28px;border-radius:7px;display:grid;place-items:center}.file-item button:hover{background:#fff;color:var(--ink)}.file-item button.fi-del:hover{color:var(--err)}.opts{display:grid;gap:14px;margin-top:18px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.opt{display:grid;gap:5px}.opt>label{font-size:.85rem;font-weight:600;color:var(--ink-2)}.opt .hint{font-size:.76rem;color:var(--ink-3)}.opt input[type=text],.opt input[type=password],.opt input[type=number],.opt select,.opt textarea{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:.92rem;background:#fff;color:var(--ink)}.opt textarea{min-height:130px;resize:vertical;grid-column:1 / -1}.opt.opt-textarea,.opt.opt-wide{grid-column:1 / -1}.opt input:focus,.opt select:focus,.opt textarea:focus{outline:2px solid color-mix(in srgb,var(--primary) 35%,transparent);border-color:var(--primary)}.opt-check{display:flex;align-items:center;gap:9px}.opt-check input{width:17px;height:17px;accent-color:var(--primary)}.opt-check label{font-size:.9rem;color:var(--ink);font-weight:500}.opt input[type=range]{width:100%;accent-color:var(--primary)}.run-row{margin-top:22px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;cursor:pointer;text-decoration:none;border-radius:11px;padding:13px 26px;font:600 1rem var(--font-body);transition:transform .12s,box-shadow .12s,background .12s}.btn:hover{text-decoration:none}.btn-primary{background:var(--tc, var(--primary));color:#fff;box-shadow:0 4px 14px color-mix(in srgb,var(--tc, var(--primary)) 35%,transparent)}.btn-primary:hover{transform:translateY(-1px);filter:brightness(1.06)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-ghost{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}.btn-ghost:hover{background:var(--line)}.btn-big{width:100%;padding:15px 26px;font-size:1.08rem}.progress-wrap{margin-top:18px;display:none}.progress-wrap.on{display:block}.progress-bar{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden}.progress-bar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:99px;transition:width .2s ease}.progress-text{font-size:.85rem;color:var(--ink-2);margin-top:7px}.result-box{display:none;margin-top:20px;padding:20px;background:#ecfdf5;border:1px solid #A7F3D0;border-radius:var(--radius);text-align:center}.result-box.on{display:block}.result-box .r-title{font-weight:700;color:#065f46;margin-bottom:4px}.result-box .r-sub{font-size:.88rem;color:#047857;margin-bottom:14px}.result-box .r-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.error-box{display:none;margin-top:18px;padding:14px 18px;background:#fef2f2;border:1px solid #FECACA;border-radius:var(--radius);color:#991b1b;font-size:.92rem}.error-box.on{display:block}.thumbs{display:none;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin-top:18px}.thumbs.on{display:grid}.thumb{position:relative;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px;text-align:center;cursor:grab}.thumb.dragging{opacity:.4}.thumb canvas,.thumb img{width:100%;border-radius:6px;background:#fff;box-shadow:var(--shadow-sm);display:block}.thumb .t-num{font-size:.75rem;color:var(--ink-3);margin-top:5px}.thumb .t-actions{position:absolute;top:12px;right:12px;display:flex;gap:4px}.thumb .t-actions button{border:0;background:#ffffffeb;cursor:pointer;width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--ink-2);box-shadow:var(--shadow-sm)}.thumb .t-actions button:hover{color:var(--primary)}.thumb.deleted{opacity:.35}.thumb.deleted canvas{filter:grayscale(1)}.sig-pad-wrap{margin-top:18px}.sig-tabs{display:flex;gap:8px;margin-bottom:10px}.sig-tabs button{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;padding:7px 16px;font:600 .88rem var(--font-body);cursor:pointer;color:var(--ink-2)}.sig-tabs button.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.sig-canvas{width:100%;height:160px;background:#fff;border:1px solid var(--line);border-radius:10px;touch-action:none;cursor:crosshair;display:block}.sig-type-input{width:100%;padding:14px;font-size:2rem;font-family:Caveat,cursive;border:1px solid var(--line);border-radius:10px;display:none}.sig-row{display:flex;gap:10px;margin-top:8px;align-items:center;flex-wrap:wrap}.page-preview{margin-top:16px;text-align:center}.page-preview .pp-stage{position:relative;display:inline-block;max-width:100%}.page-preview canvas.pp-page{border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-sm);max-width:100%;height:auto;cursor:crosshair}.page-preview img.pp-sig{position:absolute;pointer-events:none;opacity:.92}.pp-nav{display:flex;gap:8px;justify-content:center;align-items:center;margin-top:10px;font-size:.9rem;color:var(--ink-2)}.pp-nav button{border:1px solid var(--line);background:#fff;border-radius:8px;width:32px;height:32px;cursor:pointer}.tool-content{max-width:860px;margin:36px auto 0}.steps-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-top:16px}.step-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.step-card .n{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);font-weight:700;font-size:.95rem;margin-bottom:10px}.step-card p{margin:0;font-size:.92rem;color:var(--ink-2)}.privacy-strip{margin-top:34px;padding:22px;background:linear-gradient(120deg,#eef2ff,#ecfeff);border:1px solid #E0E7FF;border-radius:var(--radius-lg);display:flex;gap:16px;align-items:flex-start}.privacy-strip svg{flex:none;color:var(--primary);margin-top:2px}.privacy-strip h3{margin-bottom:4px}.privacy-strip p{margin:0;font-size:.92rem;color:var(--ink-2)}.faq-list{margin-top:16px;display:grid;gap:10px}.faq-list details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 18px}.faq-list summary{cursor:pointer;font-weight:600;padding:15px 0;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary:after{content:"+";color:var(--ink-3);font-size:1.3rem;font-weight:400;flex:none}.faq-list details[open] summary:after{content:"–"}.faq-list details p{color:var(--ink-2);font-size:.93rem;margin:0 0 16px}.related-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));margin-top:16px}section.block{padding:30px 0 6px}.site-footer{margin-top:70px;background:#0f172a;color:#cbd5e1;padding:48px 0 28px;font-size:.9rem}.site-footer a{color:#cbd5e1}.site-footer a:hover{color:#fff}.footer-grid{display:grid;gap:28px;grid-template-columns:2fr 1fr 1fr 1fr 1fr}@media (max-width: 900px){.footer-grid{grid-template-columns:1fr 1fr}}@media (max-width: 520px){.footer-grid{grid-template-columns:1fr}}.footer-grid h4{color:#fff;font-size:.92rem;margin-bottom:12px}.footer-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}.footer-brand .brand{color:#fff;margin-bottom:10px}.footer-brand p{color:#94a3b8;font-size:.86rem;max-width:280px}.footer-bottom{border-top:1px solid #1E293B;margin-top:36px;padding-top:20px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:#64748b;font-size:.82rem}.prose{max-width:760px;margin:40px auto 0}.prose h1{margin-bottom:.4em}.prose h2{margin-top:1.6em}.prose ul,.prose p{color:var(--ink-2)}@media (prefers-reduced-motion: no-preference){[data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}[data-reveal].is-in{opacity:1;transform:none}}
