@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(/fonts/bricolage-latin.woff2) format("woff2")}:root{--bg:#f5f7fb;--surface:#fff;--sunken:#eef1f7;--ink:#0f1728;--muted:#5a6478;--faint:#8b94a7;--line:#e5e9f2;--line-strong:#cbd3e1;--brand:#2b44e7;--brand-strong:#1f33be;--brand-soft:#edf0ff;--amber:#b45309;--amber-soft:#fdf1e2;--ok:#067647;--ok-strong:#05603a;--ok-soft:#e7f5ee;--danger:#d92d20;--danger-soft:#feecea;--warn:#b54708;--warn-soft:#fef0e6;--font-display:"Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",sans-serif;--font-body:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",sans-serif;--font-mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;--maxw:64rem;--radius:14px;--radius-sm:10px;--shadow-sm:0 1px 2px rgba(16,24,40,.05);--shadow-md:0 6px 16px -4px rgba(16,24,40,.12)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6}a{color:var(--brand);text-underline-offset:2px}a:hover{color:var(--brand-strong)}:focus-visible{outline:2.5px solid var(--brand);outline-offset:2px;border-radius:4px}h1,h2,h3{font-family:var(--font-display);line-height:1.12;margin:0 0 .5rem;letter-spacing:-.015em}h1{font-size:clamp(1.9rem,5vw,2.7rem);font-weight:800}h2{font-size:clamp(1.3rem,3vw,1.6rem);margin-top:2.4rem}h2,h3{font-weight:700}h3{font-size:1.08rem}p{margin:.4rem 0 .9rem}.mono,code{font-family:var(--font-mono);font-size:.88em}code{background:var(--sunken);padding:.08em .35em;border-radius:5px}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 1.1rem}.site-header{background:var(--surface);border-bottom:1px solid var(--line)}.site-header .wrap{display:flex;align-items:center;gap:1rem;min-height:3.7rem;flex-wrap:wrap;padding-top:.45rem;padding-bottom:.45rem}.wordmark{display:inline-flex;align-items:center;text-decoration:none}.wordmark-img{height:30px;width:auto;display:block}.wordmark:hover .wordmark-img{opacity:.85}.site-nav{display:flex;gap:1.05rem;margin-left:auto;font-size:.93rem;font-weight:500;flex-wrap:wrap}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover{color:var(--brand)}.seal-badge{display:inline-flex;align-items:center;gap:.45rem;background:var(--ok-soft);color:var(--ok-strong);border:1px solid #bfe3cf;border-radius:999px;padding:.32rem .85rem;font-size:.8rem;font-weight:600;text-decoration:none;white-space:nowrap}.seal-badge:hover{border-color:var(--ok);color:var(--ok-strong)}.seal-dot{width:8px;height:8px;border-radius:50%;background:var(--ok)}.seal-note{display:flex;gap:.55rem;align-items:baseline;font-size:.9rem;color:var(--ok-strong);background:var(--ok-soft);border-radius:var(--radius-sm);padding:.65rem .9rem;margin:1rem 0 1.5rem}.seal-note a{color:var(--ok-strong);font-weight:600}.hero{padding:3rem 0 1.2rem;text-align:center}.hero .kicker{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--brand);font-weight:600;margin-bottom:.7rem}.hero h1{max-width:24ch;margin-left:auto;margin-right:auto}.hero .lede{color:var(--muted);max-width:56ch;font-size:1.08rem;margin:.6rem auto .9rem}.hero .badges{justify-content:center}.badges{display:flex;flex-wrap:wrap;gap:.45rem .5rem;margin:.9rem 0 .4rem}.badges span{background:var(--surface);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow-sm);padding:.28rem .75rem;font-size:.82rem;font-weight:500;color:var(--muted);white-space:nowrap}.tool-section{margin-top:2.6rem}.tool-section>p{color:var(--muted);margin-top:-.2rem}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));grid-gap:.85rem;gap:.85rem;margin-top:1rem}.tool-card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.05rem 1.1rem;text-decoration:none;color:var(--ink);transition:box-shadow .14s,border-color .14s,transform .14s}.tool-card:hover{border-color:var(--brand);box-shadow:var(--shadow-md);transform:translateY(-2px);color:var(--ink)}.tool-card b{display:block;font-family:var(--font-display);font-weight:700;font-size:1rem;letter-spacing:-.01em}.tool-card span:not(.tool-icon){display:block;color:var(--muted);font-size:.86rem;margin-top:.15rem}.tool-card .tool-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:11px;background:var(--brand-soft);font-size:22px;line-height:1;margin:0 0 .6rem}.tool-card .spec{font-family:var(--font-mono);font-size:.74rem;color:var(--amber);background:var(--amber-soft);border-radius:6px;padding:.18rem .45rem;display:inline-block;margin-top:.45rem}.tool-head{padding-top:2.4rem}.tool-head .lede{color:var(--muted);max-width:62ch;font-size:1.05rem}.drop{border:2px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);padding:2.6rem 1.2rem;text-align:center;cursor:pointer;margin:.5rem 0;transition:border-color .14s,background .14s}.drop.over,.drop:hover{border-color:var(--brand);background:var(--brand-soft)}.drop b{display:block;font-family:var(--font-display);font-size:1.15rem;font-weight:700}.drop span{color:var(--muted);font-size:.9rem}.drop input{display:none}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.15rem 1.25rem;margin:1rem 0}.panel h3{margin-top:0}.controls{display:flex;gap:.9rem 1.4rem;flex-wrap:wrap;align-items:flex-end;margin:.8rem 0}.field{display:flex;flex-direction:column;gap:.28rem;font-size:.88rem;color:var(--muted)}.field>span{font-weight:600;color:var(--ink)}input[type=number],input[type=text],select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;padding:.5rem .65rem;min-width:7rem}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.check{display:flex;gap:.45rem;align-items:center;font-size:.92rem;color:var(--ink)}.check input{accent-color:var(--brand);width:1.05rem;height:1.05rem}.btn{font:inherit;font-weight:600;border-radius:var(--radius-sm);border:1px solid transparent;padding:.6rem 1.25rem;cursor:pointer;background:var(--brand);color:#fff;box-shadow:var(--shadow-sm);transition:background .12s}.btn:hover{background:var(--brand-strong);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn.secondary:hover{border-color:var(--brand);color:var(--brand);background:var(--surface)}.btn.small{padding:.32rem .75rem;font-size:.85rem;font-weight:500}.file-chip{display:flex;align-items:center;gap:.6rem;background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:.9rem;margin:.35rem 0}.file-chip .size{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);margin-left:auto;white-space:nowrap}.error-box,.warn-box{border-radius:var(--radius-sm);padding:.75rem .95rem;font-size:.92rem;margin:.8rem 0}.error-box{background:var(--danger-soft);color:var(--danger)}.warn-box{background:var(--warn-soft);color:var(--warn)}.progress{margin:1rem 0}.progress .bar{height:9px;border-radius:5px;background:var(--sunken);border:1px solid var(--line);overflow:hidden}.progress .fill{height:100%;background:var(--brand);border-radius:5px;transition:width .16s}.progress .label{font-size:.85rem;color:var(--muted);margin-top:.35rem;font-family:var(--font-mono)}.result{border:1px solid #bfe3cf;background:var(--ok-soft);border-radius:var(--radius);padding:1.1rem 1.25rem;margin:1rem 0}.result h3{margin:0 0 .4rem;color:var(--ok-strong)}.result .stat{font-family:var(--font-mono);font-size:.85rem;color:var(--muted)}.result .file-chip{background:var(--surface)}.page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));grid-gap:.75rem;gap:.75rem;margin:1rem 0}.page-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:.45rem;text-align:center;cursor:-webkit-grab;cursor:grab;position:relative}.page-tile.selected{border-color:var(--brand);box-shadow:0 0 0 2.5px var(--brand)}.page-tile.dragging{opacity:.4}.page-tile img{width:100%;height:auto;display:block;border:1px solid var(--line);background:#fff;border-radius:5px}.page-tile .num{font-family:var(--font-mono);font-size:.75rem;color:var(--muted);display:block;margin-top:.3rem}.page-tile .actions{display:flex;justify-content:center;gap:.3rem;margin-top:.3rem}.page-tile .actions button{font:inherit;font-size:.8rem;border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:6px;padding:.12rem .5rem;cursor:pointer}.page-tile .actions button:hover{color:var(--brand);border-color:var(--brand)}.preview-caption{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);margin:0 0 .35rem}.preview-frame{border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-sm);background:#fff;max-width:100%;height:auto;display:block}.preview-split{display:flex;gap:1.5rem;flex-wrap:wrap;align-items:flex-start}.preview-split>.preview-side{flex:0 1 20rem;min-width:14rem}.preview-split>.controls-side{flex:1 1 18rem;min-width:16rem}.chip-thumb{width:34px;height:44px;object-fit:cover;border:1px solid var(--line);border-radius:4px;background:#fff;flex:none}.chip-thumb.square{height:34px;border-radius:6px}.page-strip{display:grid;grid-auto-flow:column;grid-auto-columns:5.4rem;grid-gap:.5rem;gap:.5rem;overflow-x:auto;padding:.4rem .1rem .6rem}.page-strip figure{margin:0;text-align:center}.page-strip img{width:100%;height:auto;border:1px solid var(--line);border-radius:4px;background:#fff;display:block}.page-strip figcaption{font-family:var(--font-mono);font-size:.72rem;color:var(--muted);margin-top:.2rem}.result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));grid-gap:.6rem;gap:.6rem;margin:.6rem 0}.result-grid img{width:100%;height:auto;border:1px solid var(--line);border-radius:5px;background:#fff;display:block}.preview-table{width:100%;border-collapse:collapse;font-size:.8rem;background:var(--surface)}.preview-table td,.preview-table th{border:1px solid var(--line);padding:.25rem .45rem;text-align:left;white-space:nowrap;max-width:12rem;overflow:hidden;text-overflow:ellipsis}.preview-table tr:first-child td{font-weight:600}.text-page-preview{background:#fff;box-shadow:var(--shadow-sm);aspect-ratio:210/297;padding:9.5%;color:#1a2028}.excerpt-box,.text-page-preview{border:1px solid var(--line);border-radius:8px;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}.excerpt-box{background:var(--surface);padding:.7rem .9rem;font-size:.85rem;color:var(--muted);max-height:11rem}.editor-toolbar{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center;border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:.45rem .55rem;position:-webkit-sticky;position:sticky;top:.5rem;z-index:30}.editor-toolbar,.tbtn{background:var(--surface)}.tbtn{font:inherit;font-size:.85rem;font-weight:500;border:1px solid var(--line);color:var(--ink);border-radius:7px;padding:.32rem .6rem;cursor:pointer;white-space:nowrap}.tbtn:hover{color:var(--brand)}.tbtn.active,.tbtn:hover{border-color:var(--brand)}.tbtn.active{background:var(--brand);color:#fff}.tbtn:disabled{opacity:.4;cursor:not-allowed}.editor-toolbar .sep{width:1px;align-self:stretch;background:var(--line);margin:0 .25rem}.editor-toolbar input[type=color]{width:2rem;height:2rem;padding:2px;border:1px solid var(--line);border-radius:7px;background:var(--surface);cursor:pointer}.editor-toolbar input[type=number]{min-width:3.6rem;width:3.6rem;padding:.3rem .4rem}.editor-page{position:relative;container-type:inline-size;margin:.9rem auto;max-width:100%;border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);background:#fff;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}.editor-page>img{width:100%;height:auto;display:block;border-radius:6px;pointer-events:none}.editor-page .pagenum{position:absolute;top:-.1rem;right:.4rem;transform:translateY(-100%);font-family:var(--font-mono);font-size:.72rem;color:var(--faint)}.ed-el{position:absolute}.ed-el.selectable{cursor:move}.ed-el.selected{outline:2px solid var(--brand);outline-offset:1px}.ed-el .ed-handle{position:absolute;right:-7px;bottom:-7px;width:13px;height:13px;background:var(--brand);border:2px solid #fff;border-radius:4px;cursor:nwse-resize}.ed-text{white-space:pre-wrap;overflow-wrap:anywhere}.ed-text,.ed-textarea{line-height:1.25;font-family:Helvetica,Arial,sans-serif}.ed-textarea{position:absolute;resize:none;border:2px solid var(--brand);border-radius:3px;background:hsla(0,0%,100%,.85);padding:0;min-width:4rem;color:inherit}.editor-hint{font-size:.85rem;color:var(--muted);margin:.5rem 0}.check-row{display:flex;gap:.6rem;align-items:baseline;padding:.4rem 0;border-bottom:1px solid var(--line);font-size:.93rem}.check-row:last-child{border-bottom:none}.check-row .mark{font-weight:700;font-family:var(--font-mono)}.check-row.pass .mark{color:var(--ok)}.check-row.fail .mark{color:var(--danger)}.check-row .detail{color:var(--muted);margin-left:auto;font-family:var(--font-mono);font-size:.8rem;text-align:right}.usecase-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));grid-gap:.75rem;gap:.75rem;margin:.9rem 0}.usecase{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:.85rem 1rem}.usecase b{display:block;font-size:.95rem;margin-bottom:.2rem;font-weight:650}.usecase span{color:var(--muted);font-size:.88rem}.tips{padding-left:1.2rem}.tips li{margin:.4rem 0}.tool-doc{max-width:46rem}.tool-doc ol{padding-left:1.25rem}.tool-doc li{margin:.4rem 0}.faq details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.7rem .95rem;margin:.45rem 0}.faq details[open]{border-color:var(--line-strong)}.faq summary{cursor:pointer;font-weight:600}.faq p{color:var(--muted);margin-bottom:.2rem}.related{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}.related a{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:999px;padding:.3rem .85rem;font-size:.86rem;font-weight:500;text-decoration:none;color:var(--muted)}.related a:hover{border-color:var(--brand);color:var(--brand)}.spec-table{width:100%;border-collapse:collapse;font-size:.92rem;margin:.8rem 0;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.spec-table td,.spec-table th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--line);vertical-align:top}.spec-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--faint)}.spec-table .mono{white-space:nowrap}.table-scroll{overflow-x:auto;border-radius:var(--radius)}.verified-line{font-family:var(--font-mono);font-size:.78rem;color:var(--faint)}.site-footer{background:var(--surface);border-top:1px solid var(--line);margin-top:4.5rem;padding:2.4rem 0 3rem;color:var(--muted);font-size:.9rem}.site-footer .cols{display:flex;gap:2.5rem;flex-wrap:wrap}.site-footer h3{font-family:var(--font-body);font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:700}.site-footer ul{list-style:none;padding:0;margin:0}.site-footer li{margin:.3rem 0}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--brand)}@media (max-width:480px){.controls{gap:.7rem}input[type=number],input[type=text],select{min-width:5rem}.hero{padding-top:2rem;text-align:left}.hero .lede,.hero h1{margin-left:0}.hero .badges{justify-content:flex-start}}