:root{--bg: #F8FAFC;--bg-card: #FFFFFF;--bg-muted: #F1F5F9;--fg: #0F172A;--fg-muted: #64748B;--fg-subtle: #94A3B8;--primary: #4F46E5;--primary-hover: #4338CA;--secondary: #7C3AED;--brand: #E8192C;--success: #059669;--border: #E2E8F0;--border-mid: #CBD5E1;--shadow-card: 0 1px 3px rgba(0,0,0,.07), 0 4px 16px rgba(79,70,229,.08);--shadow-card-hover: 0 8px 32px rgba(79,70,229,.16), 0 2px 8px rgba(0,0,0,.08);--shadow-btn: 0 4px 14px rgba(79,70,229,.35);--shadow-btn-hover: 0 6px 20px rgba(79,70,229,.5);--font-sans: "Plus Jakarta Sans", -apple-system, "PingFang TC", "Microsoft JhengHei", sans-serif;--radius-card: 12px;--radius-btn: 8px;--radius-input: 8px;--ease-smooth: cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:14px;background:var(--bg);color:var(--fg);min-height:100vh;overflow-x:hidden;line-height:1.6}header{background:var(--brand);color:#fff;padding:14px 32px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px #e8192c40}.header-logo{width:26px;height:26px;border-radius:6px;flex-shrink:0}header h1{font-size:15px;font-weight:700;letter-spacing:.01em;color:#fff}main{padding:28px 32px 56px;display:flex;flex-direction:column;gap:20px;max-width:860px;margin:0 auto}.card{background:var(--bg-card);border-radius:var(--radius-card);padding:28px 32px;border:1px solid var(--border);box-shadow:var(--shadow-card);transition:box-shadow .3s var(--ease-smooth),transform .3s var(--ease-smooth)}.card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.card h2{font-size:18px;font-weight:700;margin-bottom:20px;color:var(--fg);letter-spacing:-.01em}.card h3{font-size:11px;font-weight:600;margin:20px 0 10px;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em}.field{margin-bottom:18px}.field label{display:block;font-weight:600;margin-bottom:8px;color:var(--fg);font-size:13px}.path-row{display:flex;align-items:center;gap:10px}.path-display{flex:1;background:var(--bg-muted);border:1.5px solid var(--border);border-radius:var(--radius-input);padding:9px 14px;font-size:13px;color:var(--fg);word-break:break-all;min-height:40px;display:flex;align-items:center}.path-display.placeholder{color:var(--fg-subtle)}button{cursor:pointer;border:none;border-radius:var(--radius-btn);padding:9px 18px;font-size:13px;font-family:var(--font-sans);font-weight:600;letter-spacing:.01em;transition:all .2s var(--ease-smooth);position:relative;overflow:hidden;white-space:nowrap}button:disabled{opacity:.45;cursor:not-allowed}button:not(.primary):not(:disabled){background:var(--bg-card);color:var(--primary);border:1.5px solid var(--primary)}button:not(.primary):not(:disabled):hover{background:var(--primary);color:#fff;box-shadow:var(--shadow-btn)}button.primary{background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);color:#fff;font-weight:700;padding:11px 28px;border:none;box-shadow:var(--shadow-btn)}button.primary span{position:relative;z-index:1}button.primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,var(--secondary) 0%,var(--primary) 100%);opacity:0;transition:opacity .25s var(--ease-smooth);z-index:0}button.primary:not(:disabled):hover{box-shadow:var(--shadow-btn-hover);transform:translateY(-1px)}button.primary:not(:disabled):hover:after{opacity:1}.actions{margin-top:22px;display:flex;justify-content:flex-end}.hint-card{background:#eff6ff;border:1.5px solid #BFDBFE;border-radius:var(--radius-card);overflow:hidden;box-shadow:0 1px 4px #4f46e512}.hint-header{display:flex;align-items:center;gap:8px;padding:13px 20px}.hint-icon{font-size:15px;flex-shrink:0}.hint-title{font-size:13px;font-weight:600;color:#1e40af}.hint-body{border-top:1px solid #BFDBFE;padding:14px 20px 16px}.hint-desc{font-size:12px;color:#1e40af;margin-bottom:10px;font-weight:500}.hint-file-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}.hint-file-list li{font-size:12px;color:#1d4ed8;font-weight:500;padding:4px 10px;background:#ffffffa6;border-radius:6px;border:1px solid #BFDBFE}.validation-section{margin-bottom:18px}.validation-ok{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ecfdf5;color:var(--success);border:1.5px solid #A7F3D0;border-radius:8px;font-size:13px;font-weight:600}.val-icon{font-size:15px;font-weight:700}.val-icon-err{font-size:15px;font-weight:700;color:var(--brand)}.validation-missing-header{display:flex;align-items:center;gap:8px;padding:10px 14px 8px;background:#fff1f2;border:1.5px solid #FECDD3;border-bottom:none;border-radius:8px 8px 0 0;font-size:13px;font-weight:600;color:var(--brand)}.missing-file-list{list-style:none;border:1.5px solid #FECDD3;border-top:1px solid #FECDD3;border-radius:0 0 8px 8px;background:#fff8f9;overflow:hidden}.missing-file-list li{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #FECDD3;font-size:12px}.missing-file-list li:last-child{border-bottom:none}.missing-label{font-weight:600;color:var(--brand);min-width:140px}.missing-keyword{color:#9f1239;font-size:11px;font-family:monospace;background:#ffe4e6;border-radius:4px;padding:1px 7px}.status-bar{display:flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-card);padding:14px 20px;box-shadow:var(--shadow-card);font-size:13px;color:var(--fg-muted);font-weight:500}.spinner{width:16px;height:16px;border:2px solid var(--border-mid);border-top-color:var(--primary);border-radius:50%;animation:spin .75s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:10px 12px 10px 0;text-align:left;border-bottom:1px solid var(--border)}th{font-weight:600;color:var(--fg-muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em;border-bottom:2px solid var(--border-mid)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.subtotal td{font-weight:700;border-top:1px solid var(--border-mid);border-bottom:2px solid var(--border-mid);background:var(--bg-muted);padding-left:8px;border-radius:4px}tr.separator td{border-bottom:1px solid var(--border-mid)}.diff-banner{margin-top:16px;padding:12px 16px;border-radius:8px;font-weight:600;font-size:13px;border:1.5px solid}.diff-banner.ok{background:#ecfdf5;color:var(--success);border-color:#a7f3d0}.diff-banner.error{background:#fff1f2;color:var(--brand);border-color:#fecdd3}.anomaly-summary{font-size:13px;display:flex;flex-direction:column}.anomaly-scenario{display:flex;flex-direction:column;border-top:1px solid var(--border)}.anomaly-scenario:last-child{border-bottom:1px solid var(--border)}.anomaly-row{display:flex;align-items:center;gap:10px;padding:11px 0;font-weight:600;color:var(--fg)}.anomaly-row.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s var(--ease-smooth)}.anomaly-row.collapsible:hover,.anomaly-row.collapsible:hover .collapse-arrow{color:var(--primary)}.collapse-arrow{font-size:9px;color:var(--fg-muted);flex-shrink:0;transition:color .2s var(--ease-smooth)}.anomaly-count{background:#eef2ff;color:var(--primary);border-radius:9999px;padding:2px 10px;font-weight:600;font-size:11px}.anomaly-extra{color:var(--fg-muted);font-size:12px;font-weight:400}.anomaly-detail-list{display:flex;flex-direction:column;gap:4px;padding-bottom:8px}.anomaly-detail-item{padding:10px 0 10px 16px;background:var(--bg-muted);border-left:3px solid var(--primary);border-radius:0 6px 6px 0;display:flex;flex-direction:column;gap:4px}.anomaly-detail-summary{font-weight:600;font-size:12px;color:var(--fg)}.anomaly-detail-msg{font-size:12px;color:var(--fg-muted);line-height:1.65}.success-msg{margin-top:16px;padding:12px 16px;background:#ecfdf5;color:var(--success);border-radius:8px;font-weight:600;border:1.5px solid #A7F3D0;font-size:13px}.output-row{margin-top:20px;display:flex;align-items:center;gap:12px;padding-top:18px;border-top:1px solid var(--border)}.error-bar{background:#fff1f2;color:var(--brand);border:1.5px solid #FECDD3;border-radius:var(--radius-card);padding:14px 20px;font-size:13px;font-weight:500}.badge{display:inline-block;background:#eef2ff;color:var(--primary);font-size:11px;font-weight:600;border-radius:9999px;padding:3px 10px;margin-left:8px;vertical-align:middle;font-variant-numeric:tabular-nums;letter-spacing:.02em}@media (prefers-reduced-motion: reduce){button,button:after,.card,.anomaly-row{transition-duration:0ms}}
