:root{--bg: #f4f6f8;--panel: #ffffff;--ink: #16212b;--ink-soft: #55666f;--line: #dfe5ea;--accent: #0f766e;--accent-ink: #ffffff;--warn: #b45309;--radius: 14px;--shadow: 0 1px 2px rgba(22, 33, 43, .06), 0 8px 24px rgba(22, 33, 43, .06);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0f1720;--panel: #17222c;--ink: #e8eef2;--ink-soft: #9fb1bc;--line: #26333f;--accent: #2dd4bf;--accent-ink: #06231f;--shadow: none}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,PingFang TC,PingFang SC,Hiragino Sans GB,Noto Sans CJK TC,Noto Sans CJK SC,sans-serif;padding-bottom:env(safe-area-inset-bottom)}main{max-width:42rem;margin:0 auto;padding:0 1rem 3rem}.masthead{background:var(--accent);color:#f0fdfa;padding:calc(1.4rem + env(safe-area-inset-top)) 1rem 1.5rem;text-align:center}.masthead h1{margin:0;font-size:1.9rem;letter-spacing:.02em}.tagline{margin:.3rem 0 0;opacity:.85;font-size:.95rem}.card-panel,.privacy{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;margin:1.25rem 0}.card-panel h2,.privacy h2{display:flex;align-items:center;gap:.5rem;font-size:1.05rem;margin:0 0 .9rem}.step{display:grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:.85rem;flex:none}.privacy{border-left:4px solid var(--accent)}.privacy h2{font-size:1rem}.dot{width:.6rem;height:.6rem;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px #22c55e2e;flex:none}.privacy p,.privacy li{font-size:.92rem;color:var(--ink-soft);margin:.4rem 0}.privacy strong{color:var(--ink)}.privacy ul{margin:.5rem 0 0;padding-left:1.15rem}a{color:var(--accent)}.dropzone{position:relative;border:2px dashed var(--line);border-radius:var(--radius);min-height:11rem;display:grid;place-items:center;cursor:pointer;overflow:hidden;background:repeating-linear-gradient(45deg,transparent,transparent 12px,rgba(15,118,110,.03) 12px,rgba(15,118,110,.03) 24px);transition:border-color .15s,background-color .15s}.dropzone:focus-visible,.dropzone.dragging{border-color:var(--accent);background-color:#0f766e12;outline:none}.dropzone img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0b1118}.dropzone p{margin:0;padding:1rem;text-align:center;color:var(--ink-soft);font-size:.95rem}.dropzone.has-photo p{position:relative;z-index:1;margin-top:8.5rem;background:#0b1118b8;color:#e6fffa;padding:.35rem .8rem;border-radius:999px;font-size:.8rem}.langs{border:0;padding:0;margin:1rem 0;display:flex;flex-wrap:wrap;gap:.5rem}.langs legend{font-size:.85rem;color:var(--ink-soft);margin-bottom:.4rem;padding:0}.langs label{position:relative;cursor:pointer}.langs input{position:absolute;opacity:0;pointer-events:none}.langs span{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:.5rem .85rem;font-size:.9rem;min-height:2.75rem;display:flex;align-items:center}.langs input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.langs input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}button,a.primary{font:inherit;border-radius:999px;border:1px solid transparent;padding:.85rem 1.4rem;min-height:2.9rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.primary{width:100%;background:var(--accent);color:var(--accent-ink);font-weight:600}.primary:disabled,.primary.disabled{opacity:.45}.ghost{background:transparent;border-color:var(--line);color:var(--ink)}.progress{margin-top:1rem}.bar{height:6px;border-radius:999px;background:var(--line);overflow:hidden}.bar i{display:block;height:100%;width:0%;background:var(--accent);transition:width .25s ease-out}#status{font-size:.85rem;color:var(--ink-soft);margin:.5rem 0 0}.hint{font-size:.88rem;color:var(--ink-soft);margin:-.4rem 0 1rem}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.grid label{display:block;font-size:.8rem;color:var(--ink-soft)}.grid .wide{grid-column:1 / -1}input[type=text],input[type=tel],input[type=email],textarea{width:100%;margin-top:.25rem;padding:.6rem .7rem;min-height:2.75rem;font:inherit;font-size:1rem;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px}textarea{resize:vertical}input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.actions{display:flex;flex-wrap:wrap;gap:.6rem}.actions .primary{flex:1 1 12rem}.feedback{min-height:1.2rem;font-size:.88rem;color:var(--warn);margin:.7rem 0 0}.howto{font-size:.9rem;color:var(--ink-soft);padding-left:1.2rem;margin:1.1rem 0}.howto li{margin:.5rem 0}.howto code{background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:0 .25rem;font-size:.85em}details{border-top:1px dashed var(--line);padding-top:.7rem;margin-top:.7rem}summary{cursor:pointer;font-size:.88rem;color:var(--ink-soft)}.ocr-lines ol{margin:.6rem 0 0;padding-left:1.4rem;font-size:.88rem;color:var(--ink-soft)}.vcf-source pre{margin:.6rem 0 0;padding:.7rem;background:var(--bg);border:1px solid var(--line);border-radius:10px;font-size:.78rem;white-space:pre-wrap;word-break:break-all;max-height:16rem;overflow:auto}footer{text-align:center;font-size:.8rem;color:var(--ink-soft);padding:0 1rem 2rem}footer p{margin:0}@media(max-width:30rem){.grid{grid-template-columns:1fr}}
