*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #ffffff;--fg: #111111;--muted: #666666;--border: #e5e5e5;--accent: #111111;--accent-fg: #ffffff;--ok: #0a7a3e;--warn: #9a6700;--err: #b42318;--soft: #f7f7f7;--radius: 12px;--max: 560px}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;background:var(--bg);color:var(--fg);line-height:1.5;min-height:100dvh}#app{min-height:100dvh;display:flex;flex-direction:column}.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:24px 20px 48px;flex:1}header.app-header{text-align:center;margin-bottom:28px}header.app-header h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;line-height:1.35;margin-bottom:10px}header.app-header .sub{color:var(--muted);font-size:.95rem;margin-bottom:8px}header.app-header .privacy{font-size:.8rem;color:var(--muted);margin-top:12px}.badge-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}.badge{font-size:.75rem;color:var(--muted);background:var(--soft);border:1px solid var(--border);border-radius:999px;padding:4px 10px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:36px 20px;text-align:center;background:var(--soft);cursor:pointer}.dropzone:focus-within,.dropzone.dragover{border-color:var(--fg);background:#f0f0f0}.dropzone p{color:var(--muted);font-size:.9rem;margin-top:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 24px;font-size:1rem;font-weight:600;border:none;border-radius:10px;cursor:pointer;width:100%;text-decoration:none;font-family:inherit}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:var(--bg);color:var(--fg);border:1.5px solid var(--border);margin-top:10px}.hidden-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.step{display:none}.step.active{display:block}.card{border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px;background:var(--bg)}.card h2{font-size:1.1rem;margin-bottom:12px}.meta-line{font-size:.9rem;color:var(--muted);margin-bottom:4px}.meta-line strong{color:var(--fg);font-weight:600}.issue-list{list-style:none;margin-top:8px}.issue-list li{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:.9rem}.issue-list li:last-child{border-bottom:none}.issue-list .count{font-weight:600;color:var(--warn)}.issue-list .count.zero{color:var(--ok)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 16px}.stat{background:var(--soft);border-radius:8px;padding:12px;text-align:center}.stat .num{font-size:1.35rem;font-weight:700}.stat .label{font-size:.75rem;color:var(--muted);margin-top:2px}.preview-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:8px;margin:12px 0 16px;max-height:240px}table.preview{width:100%;border-collapse:collapse;font-size:.8rem;white-space:nowrap}table.preview th,table.preview td{border-bottom:1px solid var(--border);padding:6px 10px;text-align:left}table.preview th{background:var(--soft);position:sticky;top:0;font-weight:600}.error-box{background:#fef3f2;color:var(--err);border:1px solid #fecdca;border-radius:8px;padding:12px 14px;font-size:.9rem;margin-bottom:16px}.ok-banner{background:#ecfdf3;color:var(--ok);border:1px solid #abefc6;border-radius:8px;padding:12px 14px;font-size:.9rem;margin-bottom:16px}.footer{text-align:center;padding:16px;font-size:.75rem;color:var(--muted);border-top:1px solid var(--border)}.actions{margin-top:8px}@media (min-width: 600px){header.app-header h1{font-size:1.75rem}}
