@import "https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=JetBrains+Mono:wght@300;400;500;600&family=Instrument+Sans:wght@300;400;500;600&family=Noto+Sans+TC:wght@300;400;500;600&family=Noto+Sans+JP:wght@300;400;500;600&family=Noto+Sans+KR:wght@300;400;500;600&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--bg2:#f9fafb;--bg3:#f3f4f6;--border:#e5e7eb;--border-bright:#d1d5db;--gold:#b8860b;--gold-light:#996515;--gold-dim:#b8860b1a;--text:#111827;--text-2:#4b5563;--text-3:#9ca3af;--red:#dc2626;--green:#16a34a;--blue:#2563eb;--radius:4px;--mono:"JetBrains Mono", monospace;--serif:"DM Serif Display", serif;--sans:"Instrument Sans", sans-serif}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6}#root{min-height:100vh}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg2)}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:3px}body:before{content:"";pointer-events:none;z-index:0;opacity:.15;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}.app{z-index:1;position:relative}.landing{flex-direction:column;min-height:100vh;display:flex}.nav{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.25rem 2rem;display:flex}.nav-logo{font-family:var(--serif);color:var(--gold);letter-spacing:.02em;font-size:1.25rem}.nav-badge{font-family:var(--mono);color:var(--text-3);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--border);border-radius:2px;padding:.2rem .5rem;font-size:.65rem}.hero{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:4rem 2rem;display:flex;position:relative;overflow:hidden}.hero-glow{pointer-events:none;background:radial-gradient(circle,#b8860b0f 0%,#0000 70%);border-radius:50%;width:600px;height:600px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-eyebrow{font-family:var(--mono);letter-spacing:.2em;color:var(--gold);text-transform:uppercase;opacity:0;margin-bottom:1.5rem;font-size:.7rem;animation:.6s .1s forwards fadeUp}.hero h1{font-family:var(--serif);color:var(--text);opacity:0;max-width:800px;margin-bottom:1.5rem;font-size:clamp(1.5rem,4vw,2rem);line-height:1.15;animation:.6s .25s forwards fadeUp}.hero h1 em{color:var(--gold);font-style:normal;font-weight:600}.hero-sub{color:var(--text-2);opacity:0;max-width:520px;margin-bottom:2rem;font-size:1.05rem;font-weight:300;animation:.6s .4s forwards fadeUp}.hero-cta{opacity:0;flex-direction:column;align-items:center;gap:1rem;animation:.6s .65s forwards fadeUp;display:flex}.country-selector{flex-direction:column;gap:.75rem;display:flex}.country-row{opacity:0;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-bottom:1rem;animation:.6s .52s forwards fadeUp;display:flex}.country-btn{border-radius:var(--radius);background:var(--bg2);border:1px solid var(--border);color:var(--text-2);font-family:var(--mono);cursor:pointer;white-space:nowrap;align-items:center;gap:.4rem;padding:.45rem .85rem;font-size:.75rem;transition:all .2s;display:flex}.country-btn:hover{border-color:var(--gold);color:var(--gold)}.country-btn.active{border-color:var(--gold);background:var(--gold-dim);color:var(--gold-light)}.country-flag{font-size:1rem}.country-label{font-weight:500}.country-name{font-size:.7rem}.country-cur{color:var(--text-3);font-size:.62rem}.btn-primary{background:var(--gold);color:#fff;font-family:var(--sans);letter-spacing:.05em;cursor:pointer;border-radius:var(--radius);border:none;align-items:center;gap:.5rem;padding:.85rem 2rem;font-size:.9rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary:hover{background:var(--gold-light);transform:translateY(-1px);box-shadow:0 8px 32px #b8860b33}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{color:var(--text-2);border:1px solid var(--border-bright);font-family:var(--sans);cursor:pointer;border-radius:var(--radius);background:0 0;align-items:center;gap:.5rem;padding:.85rem 2rem;font-size:.9rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-secondary:hover{border-color:var(--gold);color:var(--gold)}.btn-ghost{color:var(--text-3);font-family:var(--mono);cursor:pointer;letter-spacing:.05em;background:0 0;border:none;align-items:center;gap:.35rem;padding:.5rem;font-size:.72rem;transition:color .2s;display:inline-flex}.btn-ghost:hover{color:var(--text-2)}.btn-share{color:var(--text-2);border:1px solid var(--border-bright);font-family:var(--sans);cursor:pointer;border-radius:var(--radius);background:0 0;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.btn-share:hover{border-color:var(--blue);color:var(--blue)}.share-hint{font-family:var(--mono);color:var(--text-3);text-align:right;padding:0 .5rem;font-size:.72rem}.hero-proof{font-family:var(--mono);color:var(--text-3);letter-spacing:.08em;font-size:.7rem}.features{border-top:1px solid var(--border);opacity:0;grid-template-columns:repeat(3,1fr);animation:.6s .8s forwards fadeUp;display:grid}.feature{border-right:1px solid var(--border);flex-direction:column;gap:.6rem;padding:2rem;display:flex}.feature:last-child{border-right:none}.feature-icon{background:var(--gold-dim);width:32px;height:32px;color:var(--gold);border-radius:50%;justify-content:center;align-items:center;display:flex}.feature h3{font-family:var(--serif);font-size:1rem;font-weight:400}.feature p{color:var(--text-2);font-size:.82rem;font-weight:300;line-height:1.5}.tool-container{flex-direction:column;gap:2rem;max-width:1100px;min-height:100vh;margin:0 auto;padding:2rem 1.5rem;display:flex}.tool-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:1.5rem;display:flex}.tool-header h2{font-family:var(--serif);font-size:1.6rem;font-weight:400}.steps{align-items:center;gap:.5rem;display:flex}.step-dot{background:var(--border-bright);border-radius:50%;width:8px;height:8px;transition:all .3s}.step-dot.active{background:var(--gold);box-shadow:0 0 8px #d4a85380}.step-dot.done{background:var(--green)}.parse-section{flex-direction:column;gap:1rem;display:flex}.parse-label{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--gold);align-items:center;gap:.4rem;font-size:.7rem;display:flex}.parse-input{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--mono);color:var(--text);resize:vertical;outline:none;width:100%;min-height:100px;padding:1rem 1.25rem;font-size:.9rem;line-height:1.7;transition:border-color .2s}.parse-input::placeholder{color:var(--text-3)}.parse-input:focus{border-color:var(--gold);background:var(--bg3)}.parse-actions{align-items:center;gap:.75rem;display:flex}.btn-parse{background:var(--gold);color:#fff;font-family:var(--sans);cursor:pointer;border-radius:var(--radius);letter-spacing:.03em;border:none;align-items:center;gap:.5rem;padding:.7rem 1.5rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex}.btn-parse:hover:not(:disabled){background:var(--gold-light);box-shadow:0 4px 20px #b8860b26}.btn-parse:disabled{opacity:.5;cursor:not-allowed}.parse-hint{color:var(--text-3);font-size:.78rem}.examples-row{flex-wrap:wrap;gap:.5rem;margin-top:.25rem;display:flex}.example-chip{font-family:var(--mono);color:var(--text-3);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:2px;padding:.25rem .6rem;font-size:.7rem;transition:all .2s}.example-chip:hover{border-color:var(--gold);color:var(--gold)}.settings-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.settings-group{flex-direction:column;gap:1rem;display:flex}.settings-group h3{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--border);padding-bottom:.5rem;font-size:.68rem}.field{flex-direction:column;gap:.3rem;display:flex}.field label{font-family:var(--mono);color:var(--text-3);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem}.field input,.field textarea,.field select{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--sans);color:var(--text);outline:none;width:100%;padding:.55rem .75rem;font-size:.85rem;transition:border-color .2s}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--gold)}.field select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235a5856' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;padding-right:2rem}.field-textarea{resize:vertical;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--sans);color:var(--text);outline:none;width:100%;padding:.55rem .75rem;font-size:.85rem;transition:border-color .2s}.field-textarea:focus{border-color:var(--gold)}.logo-upload{border:1px dashed var(--border-bright);border-radius:var(--radius);cursor:pointer;background:var(--bg2);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;min-height:80px;padding:1.25rem;transition:all .2s;display:flex;position:relative}.logo-upload:hover{border-color:var(--gold);background:var(--bg3)}.logo-upload input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.logo-preview{object-fit:contain;max-width:160px;max-height:48px}.logo-upload-label{font-family:var(--mono);color:var(--text-3);text-align:center;pointer-events:none;font-size:.72rem}.items-section{flex-direction:column;gap:.75rem;display:flex}.items-header{justify-content:space-between;align-items:center;display:flex}.section-title{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--text-3);font-size:.7rem}.btn-add-item{border:1px solid var(--border);color:var(--text-3);font-family:var(--mono);cursor:pointer;border-radius:var(--radius);letter-spacing:.05em;background:0 0;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.7rem;transition:all .2s;display:flex}.btn-add-item:hover{border-color:var(--gold);color:var(--gold)}.empty-items{text-align:center;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-3);font-family:var(--mono);padding:2.5rem;font-size:.78rem}.items-table{border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius);width:100%;overflow:hidden}.items-table thead tr{background:var(--bg3);border-bottom:1px solid var(--border)}.items-table thead th{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);text-align:left;padding:.65rem .75rem;font-size:.65rem;font-weight:500}.items-table thead th.right{text-align:right}.items-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.items-table tbody tr:last-child{border-bottom:none}.items-table tbody tr:hover{background:var(--bg3)}.items-table td{padding:.4rem .5rem}.td-input{font-family:var(--sans);color:var(--text);background:0 0;border:1px solid #0000;border-radius:2px;outline:none;width:100%;padding:.35rem .5rem;font-size:.85rem;transition:border-color .15s}.td-input:focus{border-color:var(--gold);background:var(--bg)}.td-input.mono{font-family:var(--mono);font-size:.82rem}.td-select{font-family:var(--mono);color:var(--text-2);cursor:pointer;appearance:none;background:0 0;border:1px solid #0000;border-radius:2px;outline:none;width:100%;padding:.35rem .3rem;font-size:.75rem}.td-select:focus{border-color:var(--gold)}.td-amount{font-family:var(--mono);color:var(--gold);text-align:right;white-space:nowrap;padding-right:.75rem;font-size:.85rem}.td-delete{text-align:center}.btn-delete{color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:2px;align-items:center;padding:.25rem;transition:color .2s;display:flex}.btn-delete:hover{color:var(--red)}.totals-summary{border-top:1px solid var(--border);flex-direction:column;align-items:flex-end;gap:.35rem;padding:1rem .75rem;display:flex}.totals-line{font-family:var(--mono);gap:1.5rem;font-size:.82rem;display:flex}.totals-line.grand{color:var(--gold-light);border-top:1px solid var(--border);margin-top:.25rem;padding-top:.5rem;font-size:1.05rem;font-weight:600}.totals-label{color:var(--text-3);text-align:right;min-width:100px}.totals-value{text-align:right;min-width:120px}.preview-section{flex-direction:column;gap:1.5rem;display:flex}.preview-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.btn-download{background:var(--gold);color:#fff;font-family:var(--sans);cursor:pointer;border-radius:var(--radius);letter-spacing:.03em;border:none;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600;transition:all .2s;display:flex}.btn-download:hover{background:var(--gold-light);box-shadow:0 4px 20px #b8860b26}.btn-download:disabled{opacity:.5;cursor:wait}#invoice-print{color:#1a1a1a;background:#fff;border-radius:2px;width:100%;max-width:800px;margin:0 auto;padding:2.5rem 3rem;font-family:Instrument Sans,Noto Sans TC,Noto Sans JP,Noto Sans KR,Microsoft JhengHei,sans-serif;box-shadow:0 20px 80px #00000014}#invoice-print .inv-header{justify-content:space-between;align-items:flex-start;margin-bottom:1.25rem;display:flex}#invoice-print .inv-company{flex-direction:column;gap:.3rem;display:flex}#invoice-print .inv-logo{object-fit:contain;max-width:160px;max-height:48px;margin-bottom:.25rem;display:block}#invoice-print .inv-company-name{color:#000;letter-spacing:-.01em;font-size:1.5rem;font-weight:700;line-height:1.2}#invoice-print .inv-company-id{color:#666;font-family:JetBrains Mono,monospace;font-size:.7rem}#invoice-print .inv-contact{flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}#invoice-print .inv-contact-line{color:#555;white-space:pre-line;align-items:center;gap:.4rem;font-size:.78rem;display:flex}#invoice-print .inv-contact-line svg{color:#999;flex-shrink:0}#invoice-print .inv-separator{background:#d4d4d4;height:1px;margin-bottom:1.5rem}#invoice-print .inv-billing{justify-content:space-between;align-items:flex-start;margin-bottom:2rem;display:flex}#invoice-print .inv-bill-to{flex:1}#invoice-print .inv-section-label{letter-spacing:.15em;text-transform:uppercase;color:#999;margin-bottom:.4rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:500}#invoice-print .inv-client-name{color:#000;margin-bottom:.2rem;font-size:1.05rem;font-weight:600}#invoice-print .inv-client-detail{color:#555;white-space:pre-line;font-size:.8rem;line-height:1.6}#invoice-print .inv-title-block{text-align:right}#invoice-print .inv-title{color:#000;letter-spacing:.08em;margin-bottom:.75rem;font-size:1.75rem;font-weight:800;line-height:1}#invoice-print .inv-meta{flex-direction:column;gap:.2rem;display:flex}#invoice-print .inv-meta-row{justify-content:flex-end;gap:.75rem;font-size:.78rem;display:flex}#invoice-print .inv-meta-label{color:#999;letter-spacing:.05em;text-transform:uppercase;font-family:JetBrains Mono,monospace;font-size:.68rem}#invoice-print .inv-meta-value{color:#000;text-align:right;min-width:120px;font-family:JetBrains Mono,monospace;font-size:.78rem;font-weight:500}#invoice-print .inv-table{border-collapse:collapse;width:100%;margin-bottom:1.5rem}#invoice-print .inv-table thead tr{border-bottom:1px solid #000}#invoice-print .inv-table thead th{letter-spacing:.1em;text-transform:uppercase;color:#000;padding:.6rem .75rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:700}#invoice-print .inv-th-desc{text-align:left}#invoice-print .inv-th-qty{text-align:center;width:10%}#invoice-print .inv-th-price,#invoice-print .inv-th-total{text-align:right;width:18%}#invoice-print .inv-table tbody tr,#invoice-print .inv-table tbody tr:last-child{border-bottom:1px solid #e8e8e8}#invoice-print .inv-td-desc{color:#1a1a1a;padding:.7rem .75rem .7rem 1.25rem;font-size:.88rem;position:relative}#invoice-print .inv-row-accent{background:#000;border-radius:1px;width:3px;position:absolute;top:.45rem;bottom:.45rem;left:0}#invoice-print .inv-td-qty{text-align:center;color:#444;padding:.7rem .5rem;font-family:JetBrains Mono,monospace;font-size:.82rem}#invoice-print .inv-td-price{text-align:right;color:#444;padding:.7rem .75rem;font-family:JetBrains Mono,monospace;font-size:.82rem}#invoice-print .inv-td-total{text-align:right;color:#000;padding:.7rem .75rem;font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:600}#invoice-print .inv-bottom{justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:1.5rem;display:flex}#invoice-print .inv-payment{flex:1}#invoice-print .inv-payment-value{color:#333;white-space:pre-line;font-size:.85rem;line-height:1.6}#invoice-print .inv-totals{flex-direction:column;gap:.3rem;min-width:260px;display:flex}#invoice-print .inv-total-row{justify-content:space-between;align-items:center;padding:.3rem .75rem;font-family:JetBrains Mono,monospace;font-size:.82rem;display:flex}#invoice-print .inv-total-label{color:#666}#invoice-print .inv-total-value{color:#000;text-align:right;font-weight:500}#invoice-print .inv-total-grand{color:#fff;background:#000;border-radius:2px;margin-top:.25rem;padding:.55rem .75rem;font-size:.95rem;font-weight:700}#invoice-print .inv-total-grand .inv-total-label,#invoice-print .inv-total-grand .inv-total-value{color:#fff;font-weight:700}#invoice-print .inv-reverse-charge{color:#444;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:2px;margin-bottom:1rem;padding:.6rem .85rem;font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6}#invoice-print .inv-footer{color:#999;border-top:1px solid #d4d4d4;justify-content:space-between;align-items:center;padding-top:1rem;font-size:.75rem;display:flex}.alert{border-radius:var(--radius);align-items:flex-start;gap:.5rem;padding:.75rem 1rem;font-size:.82rem;display:flex}.alert-error{color:#e05b5b;background:#e05b5b1a;border:1px solid #e05b5b40}.spinner{border:2px solid #11182733;border-top-color:#111827;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}.animate-in{opacity:0;animation:.4s forwards fadeUp}.divider{border:none;border-top:1px solid var(--border);margin:.5rem 0}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=768px){.features{grid-template-columns:1fr}.feature{border-right:none;border-bottom:1px solid var(--border)}.feature:last-child{border-bottom:none}.settings-grid{grid-template-columns:1fr}.hero h1{font-size:1.5rem}.nav{padding:1rem 1.25rem}#invoice-print{padding:1.5rem 1.25rem}#invoice-print .inv-header{flex-direction:column;gap:1rem}#invoice-print .inv-contact{align-items:flex-start}#invoice-print .inv-billing{flex-direction:column;gap:1.5rem}#invoice-print .inv-title-block{text-align:left}#invoice-print .inv-meta-row{justify-content:flex-start}#invoice-print .inv-meta-value{text-align:left}#invoice-print .inv-bottom{flex-direction:column;gap:1.5rem}.tool-container{padding:1.25rem 1rem}.country-btn .country-name{display:none}.preview-actions{flex-direction:column;gap:.75rem}}@media (width<=520px){.items-table thead th:nth-child(3),.items-table td:nth-child(3){display:none}.country-btn{padding:.35rem .55rem}}@media print{body *{visibility:hidden}#invoice-print,#invoice-print *{visibility:visible}#invoice-print{color:#000;width:100%;max-width:100%;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;border-radius:0;padding:2rem;position:absolute;top:0;left:0}#invoice-print .inv-billing{flex-direction:row!important;gap:2rem!important}#invoice-print .inv-bottom{flex-direction:row!important;justify-content:space-between!important;gap:2rem!important}#invoice-print .inv-totals{align-items:flex-end!important;margin-left:auto!important}#invoice-print .inv-title-block{text-align:right!important}body:before{display:none}.no-print,.preview-actions,.share-hint,.tool-header,.nav{display:none!important}}
