:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:oklch(98.5% .004 85);--paper-2:oklch(96.3% .006 80);--paper-3:oklch(93.5% .008 80);--ink:oklch(24% .012 60);--muted:oklch(47% .014 60);--border:oklch(89% .008 80);--border-strong:oklch(80% .012 80);--accent:oklch(60% .17 42);--accent-strong:oklch(53% .17 42);--accent-tint:oklch(95% .025 50);--on-accent:oklch(99% .002 85);--ok:oklch(56% .14 150);--ok-tint:oklch(95% .03 150);--err:oklch(55% .19 25);--err-tint:oklch(95% .025 25);--focus:oklch(55% .15 250);--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-display:clamp(1.9rem, 1.2rem + 2.6vw, 2.7rem);--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:72px;--radius-sm:6px;--radius:10px;--radius-lg:14px;--rule:1px solid var(--border);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast:.14s;--dur:.22s;--z-header:100;--z-overlay:1000}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:oklch(19% .01 60);--paper-2:oklch(23% .012 60);--paper-3:oklch(28% .014 60);--ink:oklch(93% .006 85);--muted:oklch(68% .012 70);--border:oklch(31% .012 60);--border-strong:oklch(40% .014 60);--accent:oklch(70% .16 45);--accent-strong:oklch(76% .15 45);--accent-tint:oklch(28% .04 45);--on-accent:oklch(16% .02 45);--ok:oklch(72% .14 150);--ok-tint:oklch(28% .04 150);--err:oklch(70% .16 25);--err-tint:oklch(28% .04 25);--focus:oklch(72% .13 250)}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}h1,h2,h3{overflow-wrap:anywhere;min-width:0;margin:0;line-height:1.25}p{margin:0}a{color:inherit}img,video,canvas{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:var(--accent-tint)}.container{max-width:1120px;margin-inline:auto;padding-inline:clamp(16px,4vw,32px)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.site-header{z-index:var(--z-header);background:color-mix(in oklch, var(--paper) 86%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:var(--rule);position:sticky;top:0}.site-header .container{align-items:center;gap:var(--space-md);min-height:60px;display:flex}.brand{font-weight:700;font-size:var(--text-lg);letter-spacing:.01em;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand-mark{background:var(--accent);width:30px;height:30px;color:var(--on-accent);border-radius:8px;place-items:center;display:grid}.brand-tag{font-size:var(--text-xs);color:var(--muted);border:var(--rule);white-space:nowrap;border-radius:999px;padding:1px 8px;font-weight:400}.header-actions{align-items:center;gap:var(--space-xs);margin-left:auto;display:flex}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--paper);cursor:pointer;min-height:44px;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;gap:8px;padding:8px 18px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--paper-2)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-sm{min-height:36px;font-size:var(--text-sm);padding:4px 12px}.btn-icon{min-width:44px;padding:8px}.btn.is-loading{pointer-events:none;opacity:.75}.btn.is-error{border-color:var(--err);color:var(--err)}.btn.is-success{border-color:var(--ok);color:var(--ok)}.spinner{border:2px solid color-mix(in oklch, currentColor 30%, transparent);border-top-color:currentColor;border-radius:50%;flex:none;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.home-hero{padding-block:var(--space-2xl) var(--space-xl);gap:var(--space-md);max-width:760px;display:grid}.home-hero h1{font-size:var(--text-display);letter-spacing:-.015em;font-weight:800}.home-hero .sub{color:var(--muted);font-size:var(--text-lg)}.privacy-pill{width:fit-content;font-size:var(--text-sm);color:var(--ok);background:var(--ok-tint);border-radius:999px;align-items:center;gap:8px;padding:4px 14px;display:inline-flex}.search-box{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--paper);max-width:420px;color:var(--muted);transition:border-color var(--dur-fast) var(--ease-out);align-items:center;gap:10px;padding-inline:14px;display:flex}.search-box:focus-within{border-color:var(--accent)}.search-input{min-width:0;min-height:44px;color:var(--ink);background:0 0;border:0;outline:none;flex:1}.cat-section{padding-block:var(--space-lg)}.cat-section>h2{font-size:var(--text-xl);margin-bottom:var(--space-md);align-items:baseline;gap:10px;font-weight:700;display:flex}.cat-count{font-size:var(--text-sm);color:var(--muted);font-variant-numeric:tabular-nums;font-weight:400}.tool-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(min(236px,100%),1fr));display:grid}.tool-card{gap:var(--space-sm);padding:var(--space-md);border:var(--rule);border-radius:var(--radius-lg);background:var(--paper);transition:border-color var(--dur-fast) var(--ease-out), transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);align-items:flex-start;text-decoration:none;display:flex}.tool-card:hover{border-color:var(--accent);box-shadow:0 6px 18px -8px color-mix(in oklch, var(--ink) 25%, transparent);transform:translateY(-2px)}.tool-card:active{transform:translateY(0)}.tool-card .tool-icon{border-radius:var(--radius);background:var(--accent-tint);width:40px;height:40px;color:var(--accent);flex:none;place-items:center;display:grid}.tool-card h3{font-size:var(--text-base);font-weight:600}.tool-card p{font-size:var(--text-sm);color:var(--muted);margin-top:2px}.tool-head{padding-block:var(--space-lg) var(--space-md);gap:var(--space-xs);display:grid}.breadcrumb{width:fit-content;font-size:var(--text-sm);color:var(--muted);align-items:center;gap:6px;min-height:32px;text-decoration:none;display:inline-flex}.breadcrumb:hover{color:var(--accent)}.tool-head h1{font-size:var(--text-2xl);font-weight:700}.tool-head .desc{color:var(--muted);max-width:64ch}.tool-body{gap:var(--space-md);padding-bottom:var(--space-2xl);display:grid}.panel{border:var(--rule);border-radius:var(--radius-lg);background:var(--paper);padding:var(--space-md);gap:var(--space-md);min-width:0;display:grid}.panel>h2{font-size:var(--text-sm);color:var(--muted);font-weight:600}.dropzone{place-items:center;gap:var(--space-xs);text-align:center;padding:var(--space-2xl) var(--space-md);border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--paper-2);color:var(--muted);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);display:grid}.dropzone:hover,.dropzone.is-drag{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-strong)}.dropzone strong{color:var(--ink);font-weight:600}.dropzone.is-drag strong{color:var(--accent-strong)}.dropzone .dz-icon{color:var(--accent)}.dz-paste{font-size:var(--text-xs);opacity:.75}.dropzone-compact{padding:var(--space-md)}.field{gap:6px;min-width:0;display:grid}.field>label{font-size:var(--text-sm);font-weight:500}.field .help{font-size:var(--text-xs);color:var(--muted)}.input,select.input,textarea.input{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--paper);width:100%;min-height:44px;padding:8px 12px}textarea.input{resize:vertical}.input:focus-visible{outline:2px solid var(--focus);outline-offset:0;border-color:#0000}input[type=range]{accent-color:var(--accent);width:100%;min-height:28px}input[type=color]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--paper);cursor:pointer;block-size:36px;inline-size:44px;padding:2px}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:18px;height:18px}.check{min-height:32px;font-size:var(--text-sm);cursor:pointer;align-items:center;gap:8px;display:inline-flex}.row{gap:var(--space-sm);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.grid-2{gap:var(--space-sm);grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));display:grid}.seg{border:1px solid var(--border-strong);border-radius:var(--radius);display:inline-flex;overflow:hidden}.seg button{cursor:pointer;min-height:40px;font-size:var(--text-sm);transition:background var(--dur-fast) var(--ease-out);background:0 0;border:0;padding:6px 14px}.seg button+button{border-left:1px solid var(--border-strong)}.seg button:hover{background:var(--paper-2)}.seg button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.progress{background:var(--paper-3);border-radius:999px;height:8px;overflow:hidden}.progress>i{background:var(--accent);height:100%;transition:width .2s var(--ease-out);border-radius:999px;display:block}.msg{border-radius:var(--radius);font-size:var(--text-sm);align-items:flex-start;gap:8px;padding:10px 14px;display:flex}.msg-info{background:var(--paper-2);color:var(--muted)}.msg-error{background:var(--err-tint);color:var(--err)}.msg-ok{background:var(--ok-tint);color:var(--ok)}.result-list{gap:var(--space-xs);display:grid}.result-item,.file-item{align-items:center;gap:var(--space-sm);border:var(--rule);border-radius:var(--radius);padding:var(--space-xs) var(--space-sm);min-width:0;display:flex}.thumb{border-radius:var(--radius-sm);border:var(--rule);object-fit:contain;background:conic-gradient(var(--paper-3) 0 25%, transparent 0 50%, var(--paper-3) 0 75%, transparent 0) 0 0 / 16px 16px;flex:none;width:56px;height:56px}.result-meta{flex:1;gap:2px;min-width:0;display:grid}.result-meta .name{font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.result-meta .note{font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}.note-saved{color:var(--ok)}.preview-stage{padding:var(--space-md);border:var(--rule);border-radius:var(--radius);background:conic-gradient(var(--paper-3) 0 25%, transparent 0 50%, var(--paper-3) 0 75%, transparent 0) 0 0 / 16px 16px;place-items:center;display:grid;overflow:auto}.preview-stage img,.preview-stage video{max-height:420px}.crop-wrap{touch-action:none;-webkit-user-select:none;user-select:none;width:fit-content;max-width:100%;margin-inline:auto;position:relative}.crop-wrap img{width:auto;max-width:100%;max-height:60vh;display:block}.crop-rect{border:1.5px solid var(--accent);box-shadow:0 0 0 9999px color-mix(in oklch, var(--ink) 45%, transparent);cursor:move;position:absolute}.crop-handle{background:var(--paper);border:2px solid var(--accent);border-radius:50%;width:14px;height:14px;position:absolute}.crop-handle[data-h=nw]{cursor:nwse-resize;top:-7px;left:-7px}.crop-handle[data-h=ne]{cursor:nesw-resize;top:-7px;right:-7px}.crop-handle[data-h=sw]{cursor:nesw-resize;bottom:-7px;left:-7px}.crop-handle[data-h=se]{cursor:nwse-resize;bottom:-7px;right:-7px}.kv-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.kv-table th,.kv-table td{text-align:left;border-bottom:var(--rule);vertical-align:top;overflow-wrap:anywhere;padding:8px 12px}.kv-table th{color:var(--muted);white-space:nowrap;width:1%;font-weight:500}.kv-table td{font-family:var(--font-mono);font-size:var(--text-xs)}.ad-slot{justify-items:center;gap:4px;display:grid}.ad-slot:empty{display:none}.ad-slot-label{font-size:var(--text-xs);color:var(--muted);opacity:.7}.site-footer{border-top:var(--rule);padding-block:var(--space-xl);margin-top:var(--space-2xl);color:var(--muted);font-size:var(--text-sm)}.site-footer .container{gap:var(--space-xs);display:grid}.site-footer a{color:var(--ink);-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong)}.site-footer a:hover{color:var(--accent)}.suspense-fallback{place-items:center;gap:var(--space-sm);padding:var(--space-3xl) 0;color:var(--muted);display:grid}.info-body .prose{max-width:72ch;font-size:var(--text-base);line-height:1.75}.info-body .prose h2{font-size:var(--text-xl);margin-top:var(--space-lg);margin-bottom:var(--space-xs);font-weight:700}.info-body .prose h2:first-child{margin-top:0}.info-body .prose h3{font-size:var(--text-base);margin-top:var(--space-md);color:var(--ink);margin-bottom:2px;font-weight:600}.info-body .prose p,.info-body .prose ul,.info-body .prose ol{color:var(--ink)}.info-body .prose ul,.info-body .prose ol{margin:var(--space-xs) 0;gap:6px;padding-left:1.4em;display:grid}.info-body .prose li::marker{color:var(--muted)}.info-body .prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in oklch, var(--accent) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--accent) 40%, transparent)}.info-body .prose a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.info-body .prose code,.info-body .prose kbd{font-family:var(--font-mono);background:var(--paper-2);border:1px solid var(--rule);border-radius:4px;padding:1px 6px;font-size:.9em}.info-body .prose strong{color:var(--ink);font-weight:600}.footer-nav{gap:var(--space-md);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.footer-nav a{color:var(--ink);border-bottom:1px dashed var(--border-strong);padding-bottom:1px;text-decoration:none}.footer-nav a:hover{color:var(--accent);border-bottom-color:var(--accent)}@media (width<=480px){.brand-tag{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
