:root{--ink: #15202b;--ink-soft: #4a5a6a;--ink-faint: #8a9aaa;--paper: #f3f1ec;--paper-elevated: rgba(255, 255, 255, .72);--line: rgba(21, 32, 43, .08);--accent: #1a6b5c;--accent-deep: #0f4a40;--accent-soft: rgba(26, 107, 92, .12);--warm: #c47a3a;--danger-soft: #9a4a3a;--radius: 14px;--font-display: "Instrument Serif", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--shadow: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 12px 40px rgba(21, 32, 43, .06);--stream-1: #1a6b5c;--stream-2: #2f5d8c;--stream-3: #c47a3a;--stream-4: #6b5a8c;--stream-5: #5a7a4a;--stream-6: #8c4a5a}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(ellipse 90% 60% at 10% -10%,rgba(26,107,92,.14),transparent 55%),radial-gradient(ellipse 70% 50% at 100% 0%,rgba(196,122,58,.1),transparent 50%),radial-gradient(ellipse 50% 40% at 50% 100%,rgba(47,93,140,.08),transparent 55%),linear-gradient(165deg,#e9eef1 0%,var(--paper) 45%,#ebe6df 100%);background-attachment:fixed;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}.app{max-width:1180px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.hero{display:grid;gap:1.75rem;margin-bottom:2.25rem;animation:rise .7s ease both}.hero-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.25rem}.brand{display:grid;gap:.35rem}.brand-mark{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.brand h1{margin:0;font-family:var(--font-display);font-size:clamp(2.4rem,5vw,3.4rem);font-weight:400;line-height:1.05;letter-spacing:-.02em}.brand p{margin:.35rem 0 0;max-width:34rem;color:var(--ink-soft);font-size:1.05rem;line-height:1.45}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem}.file-btn,.ghost-btn,.segment button{border:1px solid var(--line);background:var(--paper-elevated);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .15s ease}.file-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.1rem;border-radius:999px;font-weight:600;font-size:.9rem}.file-btn:hover,.ghost-btn:hover{border-color:#1a6b5c59;background:#fff}.file-btn:active,.ghost-btn:active,.segment button:active{transform:translateY(1px)}.file-btn input{display:none}.ghost-btn{padding:.65rem .95rem;border-radius:999px;font-size:.85rem;color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;justify-content:center}a.ghost-btn:hover{border-color:#1a6b5c59;background:#fff}.segment{display:inline-flex;padding:.2rem;border-radius:999px;background:#ffffff8c;border:1px solid var(--line)}.segment button{border:none;background:transparent;padding:.5rem .95rem;border-radius:999px;font-size:.85rem;font-weight:500;color:var(--ink-soft)}.segment button[aria-pressed=true]{background:var(--ink);color:#fff}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:.65rem 2rem .65rem .95rem;border-radius:999px;border:1px solid var(--line);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%234a5a6a' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") right .85rem center / 10px no-repeat,var(--paper-elevated);color:var(--ink);font-size:.85rem;cursor:pointer}.pulse{display:grid;gap:.35rem;padding:1.25rem 1.4rem;border-radius:var(--radius);background:linear-gradient(120deg,#1a6b5c24,#ffffff8c);border:1px solid rgba(26,107,92,.18);animation:rise .8s ease .08s both}.pulse strong{font-family:var(--font-display);font-size:1.35rem;font-weight:400;line-height:1.25}.pulse span{color:var(--ink-soft);font-size:.92rem}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.85rem;margin:1.5rem 0;animation:rise .75s ease .12s both}.kpi{padding:1.15rem 1.2rem;border-radius:var(--radius);background:var(--paper-elevated);border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.kpi-label{margin:0;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.kpi-value{margin:.4rem 0 0;font-family:var(--font-display);font-size:clamp(1.6rem,2.5vw,2rem);line-height:1.1}.kpi-meta{margin:.35rem 0 0;font-size:.8rem;color:var(--ink-soft)}.kpi-meta.up{color:var(--accent-deep)}.kpi-meta.down{color:var(--danger-soft)}.insight-row{display:grid;grid-template-columns:repeat(4,1fr);gap:.85rem;margin-bottom:1.5rem;animation:rise .8s ease .18s both}.insight{position:relative;overflow:hidden;padding:1.25rem 1.3rem 1.35rem;border-radius:var(--radius);background:var(--paper-elevated);border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.insight:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent)}.insight:nth-child(2):before{background:var(--warm)}.insight:nth-child(3):before{background:var(--stream-2)}.insight:nth-child(4):before{background:var(--stream-5)}.insight-tag{margin:0;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.insight h3{margin:.45rem 0 0;font-family:var(--font-display);font-size:1.55rem;font-weight:400}.insight .amount{margin:.25rem 0 0;font-size:1.05rem;font-weight:600;color:var(--accent-deep)}.insight p{margin:.55rem 0 0;font-size:.85rem;color:var(--ink-soft);line-height:1.4}.consistency-bar{margin-top:.85rem;height:4px;border-radius:2px;background:#15202b14;overflow:hidden}.consistency-bar>span{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,var(--stream-2),var(--accent));transform-origin:left;animation:growBar .9s ease .3s both}.grid-2{display:grid;grid-template-columns:1.6fr 1fr;gap:.85rem;margin-bottom:.85rem;animation:rise .85s ease .22s both}.panel{padding:1.25rem 1.3rem 1.1rem;border-radius:var(--radius);background:var(--paper-elevated);border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.85rem}.panel-head h2{margin:0;font-family:var(--font-display);font-size:1.35rem;font-weight:400}.panel-head span{font-size:.8rem;color:var(--ink-faint)}.chart-wrap{width:100%;height:280px}.chart-wrap.tall{height:320px}.stream-table{width:100%;border-collapse:collapse;font-size:.9rem}.stream-table th{text-align:left;padding:.55rem .4rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line)}.stream-table td{padding:.75rem .4rem;border-bottom:1px solid var(--line);vertical-align:middle}.stream-table tr:last-child td{border-bottom:none}.stream-name{display:flex;align-items:center;gap:.55rem;font-weight:600}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.num{font-variant-numeric:tabular-nums;text-align:right}.muted{color:var(--ink-soft)}.empty{display:grid;place-items:center;text-align:center;gap:.75rem;min-height:55vh;padding:2rem;animation:rise .6s ease both}.empty h1{margin:0;font-family:var(--font-display);font-size:clamp(2.2rem,5vw,3.2rem);font-weight:400}.empty p{margin:0;max-width:28rem;color:var(--ink-soft);line-height:1.5}.empty-actions{justify-content:center;margin-top:.75rem}.empty-status{margin-top:.35rem!important;font-size:.9rem}.error{margin-top:.75rem;padding:.75rem 1rem;border-radius:10px;background:#9a4a3a1a;color:var(--danger-soft);font-size:.9rem}.file-meta{margin-top:.35rem;font-size:.8rem;color:var(--ink-faint)}.legend{display:flex;flex-wrap:wrap;gap:.65rem 1rem;margin-top:.5rem}.legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--ink-soft)}.app-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:.65rem;margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--line)}.empty code{font-size:.9em;padding:.1em .35em;border-radius:4px;background:#15202b0f}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes growBar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media(max-width:960px){.kpi-row,.insight-row{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}@media(max-width:560px){.app{padding:1.5rem 1rem 3rem}.kpi-row,.insight-row{grid-template-columns:1fr}.controls{width:100%}.file-btn,.ghost-btn,.select-wrap,.segment{width:100%;justify-content:center}.select-wrap select{width:100%}}
