:root{--spark-purple: #6E28A8;--spark-purple-light: #8B3FC7;--spark-purple-dark: #551F82;--spark-purple-subtle: #F5F0FA;--primary: #6E28A8;--primary-dark: #551F82;--accent: #8B3FC7;--text: #1a1a1a;--text-light: #666666;--muted: #999999;--border: #e5e5e5;--card-bg: #ffffff;--bg-subtle: #fafafa;--success: #10b981;--warning: #f59e0b;--error: #ef4444}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#fafafa;color:var(--text);position:relative;line-height:1.6;overflow-x:hidden}body:before{content:"";position:fixed;top:0;left:0;right:0;height:500px;background:linear-gradient(180deg,var(--spark-purple-subtle) 0%,transparent 100%);z-index:-1;opacity:.4}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-shell .page{flex:1;min-height:calc(100vh - 64px)}.app-nav{position:fixed;top:0;left:0;right:0;height:64px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:100;display:flex;align-items:center;padding:0 32px}.nav-container{max-width:1600px;width:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.nav-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text)}.nav-logo{width:32px;height:32px;background:var(--spark-purple);border-radius:8px;display:flex;align-items:center;justify-content:center}.nav-logo svg{width:20px;height:20px}.nav-brand-text{display:flex;flex-direction:column;gap:0}.nav-brand-company{font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--muted);line-height:1}.nav-brand-product{font-family:Manrope,Inter,sans-serif;font-size:1.1rem;font-weight:700;letter-spacing:-.01em;color:var(--text);line-height:1.2}.nav-links{display:flex;align-items:center;gap:8px}.nav-link{padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:500;color:var(--text-light);text-decoration:none;transition:all .2s ease;border:1px solid transparent}.nav-link:hover{background:var(--spark-purple-subtle);color:var(--spark-purple)}.nav-link.nav-link-primary{background:var(--spark-purple);color:#fff;border-color:var(--spark-purple)}.nav-link.nav-link-primary:hover{background:var(--spark-purple-dark);color:#fff}.nav-link-active{background:var(--spark-purple-subtle);color:var(--spark-purple);border-color:#6e28a840}.nav-link-primary-active{background:var(--spark-purple-dark);color:#fff;border-color:var(--spark-purple-dark);box-shadow:0 8px 18px #6e28a82e}.nav-user{display:flex;align-items:center;gap:10px}.nav-user-pill{width:30px;height:30px;border-radius:999px;background:var(--spark-purple);color:#fff;font-size:.85rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;letter-spacing:.03em;cursor:pointer;transition:all .2s ease;text-decoration:none}.nav-user-pill:hover{background:#6b21a8;transform:scale(1.05)}.nav-link-button{border:1px solid transparent;background:transparent;padding:8px 16px;border-radius:8px;font-size:.9rem;font-weight:500;color:var(--text-light);cursor:pointer;transition:all .2s ease}.nav-link-button:hover{background:var(--spark-purple-subtle);color:var(--spark-purple);border-color:#6e28a840}.page{width:100%;max-width:1600px;margin:0 auto;padding:96px 32px 48px;display:flex;flex-direction:column;gap:32px;min-height:100vh}.page.page--report{gap:40px}.intro-layout{display:flex;flex-direction:column;gap:24px;max-width:1400px;margin:0 auto;width:100%;flex:1}@media (min-width: 1024px){.intro-layout{display:grid;grid-template-columns:minmax(320px,420px) minmax(580px,1fr);gap:32px;align-items:stretch;min-height:calc(100vh - 208px)}.hero,.upload-wrapper{height:100%}.hero{display:flex;flex-direction:column;justify-content:center}.upload-wrapper{display:flex;flex-direction:column}}.hero{display:flex;align-items:center;gap:20px;padding:32px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:0 1px 3px #0000000d}@media (min-width: 1180px){.hero{flex-direction:column;align-items:flex-start;justify-content:space-between;padding:28px}}.hero-icon{width:56px;height:56px;flex-shrink:0;border-radius:12px;background:var(--spark-purple-subtle);display:flex;align-items:center;justify-content:center}.hero-icon svg{width:36px;height:36px}.hero-content h1{font-family:Manrope,Inter,sans-serif;font-size:2.35rem;font-weight:700;letter-spacing:-.02em;margin-bottom:10px}.hero-content p{color:var(--text-light);font-size:.95rem;line-height:1.5}.eyebrow{display:inline-block;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--primary);margin-bottom:8px}.card{background:var(--card-bg);border-radius:16px;padding:32px;border:1px solid var(--border);box-shadow:0 1px 3px #0000000d}.upload-wrapper{display:flex;flex-direction:column;justify-content:space-between;gap:20px}.section-header{margin-bottom:4px}.section-header h2{font-family:Manrope,Inter,sans-serif;font-size:1.75rem;letter-spacing:-.01em;margin-bottom:6px}.section-header p{color:var(--text-light);font-size:.95rem;line-height:1.5}.upload-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.upload-card{position:relative;border:2px dashed var(--border);border-radius:12px;background:#fff;padding:28px;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;cursor:pointer;text-align:center;transition:all .2s ease}.upload-card:hover{border-color:var(--spark-purple);background:var(--spark-purple-subtle)}.upload-card.is-dragover{border-style:solid;border-color:var(--spark-purple);background:var(--spark-purple-subtle);box-shadow:0 0 0 4px #6e28a81a}.upload-card input[type=file]{display:none}.upload-artwork{width:56px;height:56px;border-radius:12px;background:var(--spark-purple-subtle);display:flex;align-items:center;justify-content:center}.upload-artwork svg{width:32px;height:32px}.upload-tag{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.upload-card h3{font-size:1.1rem;font-weight:600;letter-spacing:-.01em}.upload-hint{color:var(--muted);font-size:.9rem}.file-name{font-size:.9rem;color:#0f172aa6}.upload-card.has-file{border-style:solid;border-color:var(--success);background:#10b9810d}.upload-card.has-file .file-name{color:var(--success);font-weight:600}.upload-card.has-file .upload-artwork{background:#10b9811a}.primary-action{width:100%;background:var(--spark-purple);color:#fff;border:none;padding:14px 24px;font-size:1rem;font-weight:600;border-radius:10px;cursor:pointer;transition:all .2s ease;letter-spacing:.01em}.primary-action:hover:not(:disabled){background:var(--spark-purple-dark);box-shadow:0 4px 12px #6e28a84d}.primary-action:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.primary-action.is-busy{position:relative;pointer-events:none;opacity:.8}.primary-action.is-busy:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;border:2.2px solid rgba(255,255,255,.68);border-left-color:transparent;top:50%;right:24px;margin-top:-8px;animation:spin .8s linear infinite}.error-banner{border-radius:12px;padding:12px 16px;background:#dc26261f;color:var(--error);border:1px solid rgba(220,38,38,.22);display:none}.error-banner.show{display:block}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;padding:24px;background:#0f172a47;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:50}.loading-overlay.show{display:flex;animation:fadeIn .3s ease}.loading-card{width:min(420px,94vw);padding:36px;border-radius:16px;background:var(--spark-purple);color:#fff;box-shadow:0 8px 32px #6e28a866;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;position:relative;overflow:hidden}.loading-spark{width:60px;height:60px;border-radius:50%;border:4px solid rgba(248,250,252,.25);border-top-color:#38bdf8;border-right-color:#38bdf8;box-shadow:0 0 0 4px #38bdf81f;animation:spin 1s linear infinite}.loading-steps h3{font-size:1.08rem;font-weight:600;letter-spacing:-.01em}.loading-steps p{color:#f8fafcd9;font-size:.95rem}.loading-progress{width:100%;height:6px;border-radius:999px;background:#f8fafc2e;overflow:hidden}.loading-progress-bar{width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#22d3ee 55%,#a855f7);box-shadow:0 0 12px #38bdf866;transition:width .6s ease;position:relative}.loading-progress-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 0%,rgba(248,250,252,.35) 45%,transparent 75%);animation:shimmer 2s linear infinite}.loading-footnote{font-size:.75rem;color:#f8fafcb3}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.summary-card{position:relative;overflow:hidden;border-radius:16px;padding:40px;background:var(--spark-purple);color:#fff;box-shadow:0 4px 20px #6e28a840}.summary-card h2{font-family:Manrope,Inter,sans-serif;font-size:2rem;margin-bottom:16px;letter-spacing:-.01em}.summary-card p{color:#ffffffe6;max-width:600px;line-height:1.5}.change-amount{font-size:2.6rem;font-weight:700;letter-spacing:-.03em;margin-bottom:12px}.change-amount.positive,.change-amount.negative{color:#fffffff2}.insights-card{display:flex;flex-direction:column;gap:24px}.detail-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.smart-changes-layout{display:flex;flex-direction:column;gap:24px}.changes-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.change-group-card{border-radius:12px;padding:24px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 3px #0000000d;display:flex;flex-direction:column;gap:16px}.change-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.change-group-card h3{font-size:1rem;font-weight:600;color:var(--text);margin:0}.change-subtotal{font-size:1.1rem;font-weight:700;padding:4px 12px;border-radius:6px;white-space:nowrap}.change-subtotal.change-positive{color:var(--error);background:#ef44441a}.change-subtotal.change-negative{color:var(--success);background:#10b9811a}.change-sections{display:flex;flex-direction:column;gap:18px}.change-section{display:flex;flex-direction:column;gap:10px}.change-section-label{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding-bottom:4px;border-bottom:1px solid rgba(208,215,230,.4)}.change-list{list-style:none;display:flex;flex-direction:column;gap:4px}.change-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--bg-subtle);border-radius:8px;border:1px solid transparent;transition:all .2s ease;gap:12px}.change-item:hover{background:var(--spark-purple-subtle);border-color:var(--spark-purple)}.change-description{font-size:.92rem;color:var(--text);flex:1;line-height:1.4}.change-amount{font-weight:600;font-size:.95rem;display:flex;align-items:center;gap:4px;white-space:nowrap}.change-icon{font-size:1.1rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.change-positive{color:#dc2626}.change-negative{color:#0f9d58}.math-breakdown{margin-top:8px;padding:24px;background:var(--spark-purple-subtle);border-radius:12px;border:2px solid var(--spark-purple);display:flex;flex-direction:column;gap:16px}.math-breakdown-header{margin-bottom:8px}.math-breakdown-header h4{font-size:1.1rem;font-weight:700;color:var(--spark-purple);margin:0 0 6px}.math-subtitle{font-size:.85rem;color:var(--text-light);margin:0}.math-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;gap:16px}.math-row.math-total{border-top:2px solid var(--spark-purple);padding-top:16px;margin-top:4px}.math-label{font-size:1rem;font-weight:500;color:var(--text)}.math-value{font-size:1.2rem;font-weight:700;font-family:SF Mono,Monaco,Courier New,monospace}.math-value.positive{color:var(--error)}.math-value.negative{color:var(--success)}.math-total .math-label{font-weight:700;font-size:1.1rem}.math-total .math-value{font-size:1.4rem}.math-note{margin-top:8px;padding:12px;background:#fff;border-radius:8px;font-size:.85rem;color:var(--text-light);font-style:italic}.change-group-card .empty-state{padding:20px;text-align:center;color:var(--muted);font-style:italic;font-size:.9rem}.detail-card{border-radius:12px;padding:24px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 3px #0000000d;display:flex;flex-direction:column;gap:14px}.detail-card h3{font-size:1rem;font-weight:600;color:var(--text)}.detail-list{list-style:none;display:flex;flex-direction:column;gap:6px}.detail-list li{position:relative;padding:8px 0 8px 18px;border-bottom:1px solid rgba(208,215,230,.6)}.detail-list li:last-child{border-bottom:none}.detail-list li:before{content:"";position:absolute;width:6px;height:6px;border-radius:50%;background:var(--primary);left:0;top:14px}.detail-list li.empty-state{padding-left:0;color:var(--muted);font-style:italic}.detail-list li.empty-state:before{display:none}.anomalies{border-top:1px solid rgba(208,215,230,.7);padding-top:18px;margin-top:18px}.anomalies h3{font-size:1.05rem;font-weight:600;margin-bottom:10px}.anomalies ul{color:var(--text);list-style:disc;padding-left:18px;display:flex;flex-direction:column;gap:8px}.recommendations{border-top:1px solid rgba(208,215,230,.7);padding-top:18px}.recommendations h3{font-size:1.05rem;font-weight:600;margin-bottom:10px}.recommendations ul{color:var(--text);list-style:disc;padding-left:18px;display:flex;flex-direction:column;gap:8px}.report-layout{display:flex;flex-direction:column;gap:24px;max-width:1400px;margin:0 auto;width:100%}@media (min-width: 1024px){.report-layout{gap:28px}}.report-actions{display:flex;justify-content:flex-end;margin-top:12px}.markdown-block{line-height:1.6;color:var(--text)}.markdown-block h3{margin:1.5rem 0 .75rem;font-size:1.1rem;font-weight:600;color:var(--text)}.markdown-block h4,.markdown-block h5{margin:1.25rem 0 .75rem;font-size:1rem;font-weight:600}.markdown-block p{margin:.75rem 0}.markdown-block ul,.markdown-block ol{margin:.75rem 0 .75rem 1.25rem;padding:0}.markdown-block ul{list-style:disc}.markdown-block ol{list-style:decimal}.markdown-block li+li{margin-top:.4rem}.markdown-list{margin:0;padding-left:1.2rem}.markdown-inline{display:inline}.markdown-inline strong{font-weight:600}.page.page--landing{display:flex;flex-direction:column;gap:48px}.landing-hero{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:stretch}.landing-hero-copy h1{font-family:Manrope,Inter,sans-serif;font-size:2.6rem;letter-spacing:-.02em;margin-bottom:12px}.landing-hero-copy p{color:var(--text-light);font-size:1rem;line-height:1.6;max-width:520px}.landing-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:20px}.landing-actions .primary-action,.landing-actions .secondary-button{width:auto;min-width:160px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.landing-actions .secondary-button{padding:12px 20px}.landing-hero-visual{display:grid;gap:16px}.landing-hero-card{background:#ffffffe6;border:1px solid rgba(110,40,168,.08);border-radius:14px;padding:24px;box-shadow:0 12px 32px #6e28a81a}.landing-hero-card h3{font-size:1.1rem;margin-bottom:8px}.landing-hero-card p{color:var(--text-light);font-size:.95rem;line-height:1.5}.landing-hero-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--spark-purple-subtle);font-size:1.2rem;margin-bottom:12px}.landing-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.landing-card{min-height:180px;display:flex;flex-direction:column;gap:12px}.landing-card p{color:var(--text-light);font-size:.95rem;line-height:1.6}.page.page--auth{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 64px);padding:120px 32px 64px}.auth-card{max-width:420px;width:100%;display:flex;flex-direction:column;gap:24px}.auth-header h1{font-family:Manrope,Inter,sans-serif;font-size:2rem;letter-spacing:-.015em;margin-bottom:8px}.auth-header p{color:var(--text-light)}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-field{display:flex;flex-direction:column;gap:8px;font-size:.95rem;color:var(--text)}.auth-field input{border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:.95rem;transition:border-color .2s ease,box-shadow .2s ease}.auth-field input:focus{outline:none;border-color:var(--spark-purple);box-shadow:0 0 0 3px #6e28a826}.auth-feedback{border-radius:10px;padding:12px 14px;font-size:.9rem;line-height:1.4}.auth-feedback--error{background:#ef44441f;border:1px solid rgba(239,68,68,.24);color:var(--error)}.auth-feedback--success{background:#10b9811a;border:1px solid rgba(16,185,129,.22);color:var(--success)}.auth-footnote{text-align:center;font-size:.85rem;color:var(--text-light);line-height:1.5}.secondary-button{background:#0f172a0f;color:var(--text);border:1px solid rgba(15,23,42,.12);padding:12px 18px;font-size:.95rem;font-weight:600;border-radius:12px;cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease}.secondary-button:hover{background:#0f172a1a;border-color:#0f172a2e}@media (max-width: 960px){.app-nav{padding:0 24px}.page{gap:24px;padding:88px 24px 40px}.nav-brand-text{display:none}.landing-hero{grid-template-columns:1fr}.landing-hero-copy h1{font-size:2.2rem}.landing-actions{justify-content:flex-start}.page.page--auth{padding:104px 24px 56px}}@media (max-width: 720px){.card{padding:24px}.summary-card{padding:28px}.landing-actions{width:100%}.landing-actions .primary-action,.landing-actions .secondary-button{width:100%;min-width:0}.landing-grid{grid-template-columns:1fr}}@media (max-width: 540px){.app-nav{padding:0 18px}.page{padding:80px 18px 32px}.upload-card{min-height:190px}.primary-action{font-size:.95rem;padding:12px 18px}.nav-links{gap:4px}.nav-link{padding:6px 12px;font-size:.85rem}.nav-links{flex-wrap:wrap;justify-content:flex-end}.nav-user{width:100%;justify-content:flex-end}.nav-link-button{width:auto}.landing-hero{gap:18px}.landing-hero-card{padding:20px}.landing-hero-copy h1{font-size:1.85rem}.page.page--auth{padding:92px 18px 48px}}.history-header{margin-bottom:2rem}.history-header h1,.history-header h2{margin:.5rem 0 .25rem}.history-header p{color:var(--text-light);margin:.5rem 0 0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:var(--bg-subtle);border:1px solid var(--border);border-radius:8px;padding:1.25rem;text-align:center;transition:all .2s ease}.stat-card:hover{border-color:var(--spark-purple);box-shadow:0 4px 12px #6e28a814}.stat-value{font-size:2rem;font-weight:700;color:var(--spark-purple);font-family:SF Mono,Monaco,Courier New,monospace;margin-bottom:.5rem}.stat-value.change-positive{color:var(--error)}.stat-value.change-negative{color:var(--success)}.stat-value.change-neutral{color:var(--text-light)}.stat-label{font-size:.85rem;color:var(--text-light);font-weight:500}.history-list{display:flex;flex-direction:column;gap:.75rem}.history-item{background:var(--bg-subtle);border:1px solid var(--border);border-radius:8px;padding:1rem;cursor:pointer;transition:all .2s ease}.history-item:hover{border-color:var(--spark-purple);background:#f9f5ff;box-shadow:0 4px 12px #6e28a81a;transform:translateY(-2px)}.history-item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.history-item-info h3{margin:0 0 .25rem;font-size:1.1rem;color:var(--text)}.history-item-dates{margin:0;font-size:.85rem;color:var(--text-light)}.history-item-amount{text-align:right}.history-amount{font-size:1.25rem;font-weight:700;font-family:SF Mono,Monaco,Courier New,monospace}.history-amount.change-positive{color:var(--error)}.history-amount.change-negative{color:var(--success)}.history-amount.change-neutral{color:var(--text)}.history-percentage{margin:.25rem 0 0;font-size:.85rem;color:var(--text-light)}.history-item-details{display:flex;gap:2rem;font-size:.85rem;flex-wrap:wrap}.detail-item{display:flex;gap:.5rem;align-items:center}.detail-label{color:var(--text-light);font-weight:500}.detail-value{color:var(--text);font-weight:600}.empty-state{text-align:center;padding:2rem 1rem;color:var(--text-light)}.empty-state p{margin:0;font-size:1rem}.comparison-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.comparison-detail-header h2{margin:0}.close-button{padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-button:hover{background:var(--bg-subtle);border-radius:4px}.comparison-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-bottom:1.5rem}.detail-section{padding:1.25rem;background:var(--bg-subtle);border-radius:8px}.detail-section h3{margin:0 0 1rem;font-size:1rem;color:var(--text);font-weight:600}.detail-amount{font-size:1.8rem;font-weight:700;font-family:SF Mono,Monaco,Courier New,monospace;margin-bottom:.5rem}.detail-amount.change-positive{color:var(--error)}.detail-amount.change-negative{color:var(--success)}.detail-percentage{margin:0;font-size:.9rem;color:var(--text-light)}.item-changes{display:flex;flex-direction:column;gap:.75rem}.change-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border)}.change-item:last-child{border-bottom:none}.change-value{font-weight:700;font-family:SF Mono,Monaco,Courier New,monospace}.change-value.positive{color:var(--error)}.change-value.negative{color:var(--success)}.date-info{display:flex;flex-direction:column;gap:.75rem}.date-info p{margin:0;font-size:.95rem;line-height:1.5}.date-info strong{color:var(--text);font-weight:600}
