:root{--bg:#ffffff;--fg:#16181d;--muted:#5b6270;--line:#e3e6ec;--accent:#1f5fbf;--accent-fg:#ffffff;--ok:#1f7a3d;--warn:#8a5a00;--err:#b00020;--soft:#f5f7fa;--radius:8px;--max:1080px;font-size:16px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}a{color:var(--accent)}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffbf47;outline-offset:2px}h1{font-size:clamp(1.6rem,4vw,2.4rem);line-height:1.2;margin:0 0 .5rem}h2{font-size:clamp(1.25rem,3vw,1.6rem);margin:2rem 0 .75rem}h3{font-size:1.1rem;margin:1.25rem 0 .5rem}p{margin:.5rem 0}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}pre{border:1px solid var(--line);border-radius:var(--radius);padding:.75rem;overflow-x:auto}code,pre{background:var(--soft)}code{padding:0 .25em;border-radius:3px}pre code{background:none;padding:0}.container{max-width:var(--max);margin:0 auto;padding:0 1rem}.site-header{border-bottom:1px solid var(--line)}.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:.5rem 1rem;min-height:56px;flex-wrap:wrap;padding-top:.6rem;padding-bottom:.75rem}.brand{font-weight:700;text-decoration:none;color:var(--fg);font-size:1.15rem}.nav{display:flex;gap:1rem;flex-wrap:wrap}.nav a{text-decoration:none;color:var(--fg)}.nav a:hover{text-decoration:underline}main{min-height:60vh;padding:1.5rem 0 3rem}.site-footer{border-top:1px solid var(--line);padding:1.5rem 0;color:var(--muted);font-size:.9rem}.site-footer .links{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.hero{padding:1.5rem 0 1rem}.hero p.sub{font-size:1.15rem;color:var(--muted);max-width:60ch}.price-tag{background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:.25rem .75rem}.btn,.price-tag{display:inline-block;font-weight:600}.btn{border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);padding:.6rem 1.1rem;border-radius:var(--radius);font-size:1rem;cursor:pointer;text-decoration:none;line-height:1.2}.btn:hover{filter:brightness(.95)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:#fff;color:var(--accent)}.btn.danger{background:#fff;color:var(--err);border-color:var(--err)}.btn.small{padding:.35rem .7rem;font-size:.9rem}.dropzone{border:2px dashed var(--accent);border-radius:var(--radius);padding:1.5rem;text-align:center;background:var(--soft);margin:1rem 0}.dropzone.active{background:#e8f0fe}.dropzone input[type=file]{display:block;margin:.75rem auto;max-width:100%}.note{color:var(--muted);font-size:.92rem}.card{border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin:1rem 0;background:#fff}.card.soft{background:var(--soft)}.grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.steps{counter-reset:step;padding:0;list-style:none;display:grid;grid-gap:.75rem;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.steps li{border:1px solid var(--line);border-radius:var(--radius);padding:.75rem 1rem}.steps li:before{counter-increment:step;content:counter(step);display:inline-block;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--accent);color:#fff;text-align:center;line-height:1.6rem;font-weight:700;margin-right:.5rem}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}table{border-collapse:collapse;width:100%;font-size:.9rem}td,th{border-bottom:1px solid var(--line);padding:.45rem .6rem;text-align:left;vertical-align:top;white-space:nowrap}td.wrap,th.wrap{white-space:normal}th{background:var(--soft);position:-webkit-sticky;position:sticky;top:0}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1px solid var(--line)}.badge.error{color:var(--err);border-color:var(--err)}.badge.warning{color:var(--warn);border-color:var(--warn)}.badge.info{color:var(--muted)}.badge.ok{color:var(--ok);border-color:var(--ok)}.alert{border-radius:var(--radius);padding:.75rem 1rem;margin:.75rem 0;border:1px solid}.alert.error{border-color:var(--err);background:#fff5f6}.alert.warning{border-color:var(--warn);background:#fff9ec}.alert.ok{border-color:var(--ok);background:#f1faf3}.alert.info{border-color:var(--line);background:var(--soft)}.field{display:grid;grid-gap:.25rem;gap:.25rem;margin:.6rem 0}.field label{font-weight:600}.field input[type=number],.field input[type=text],.field select,.field textarea{padding:.45rem .55rem;border:1px solid #b8bec9;border-radius:6px;font-size:1rem;max-width:100%;background:#fff}.field .hint{color:var(--muted);font-size:.85rem}.inline{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.mapping-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,2fr);grid-gap:.5rem;gap:.5rem;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--line)}@media (max-width:480px){.mapping-row{grid-template-columns:1fr}}.checkbox{display:flex;gap:.5rem;align-items:flex-start;margin:.5rem 0}.checkbox input{margin-top:.3rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.status-line{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.spinner{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}details summary{cursor:pointer;font-weight:600}.faq details{border-bottom:1px solid var(--line);padding:.5rem 0}.kv{display:grid;grid-template-columns:max-content 1fr;grid-gap:.25rem 1rem;gap:.25rem 1rem}.kv dt{font-weight:600}.kv dd{margin:0}.recovery-code{font-family:ui-monospace,monospace;font-size:1.1rem;word-break:break-all;background:var(--soft);border:1px solid var(--line);padding:.75rem;border-radius:var(--radius)}.prose{max-width:72ch}.prose ol,.prose ul{padding-left:1.25rem}.legal h2{margin-top:1.5rem}.placeholder{background:#fff3cd;border:1px dashed #d4a017;padding:0 .25rem}.skip-link{position:absolute;left:-999px;top:0;background:#fff;padding:.5rem;z-index:100}.skip-link:focus{left:.5rem}