@import "https://fonts.googleapis.com/css2?family=Amazon+Ember:wght@300;400;500;700&family=Inter:wght@300;400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}body{color:#0f1111;background:#fafafa;font-family:Inter,Amazon Ember,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.6}.app{flex-direction:column;min-height:100vh;display:flex}.header-content{z-index:1;flex-direction:column;gap:1rem;max-width:1200px;margin:0 auto;padding:0 2rem;display:flex;position:relative}.logout-floating{z-index:1000;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:radial-gradient(120px 40px at 80%,#ffcc002e,#fc00);border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex;position:fixed;top:12px;right:12px}.logout-btn{color:#fff;letter-spacing:.2px;cursor:pointer;background:linear-gradient(135deg,#2a303b 0%,#1a202c 100%);border:1px solid #ffcc0059;border-radius:999px;padding:.6rem 1.1rem;font-size:.9rem;font-weight:700;transition:transform .15s,box-shadow .2s,background .2s;box-shadow:0 8px 20px #00000040,inset 0 0 0 2px #ffcc0026}.logout-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px #0000004d,inset 0 0 0 2px #ffcc0040}.logout-btn:active{transform:translateY(0)}.logout-overlay{z-index:1100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.logout-card{color:#fafafa;background:linear-gradient(#0f1111 0%,#151a1f 100%);border:1px solid #ffcc0040;border-radius:16px;outline:1px solid #ffcc0026;width:360px;padding:1.25rem;box-shadow:0 24px 60px #00000073}.logout-title{margin-bottom:.9rem;font-size:1.05rem;font-weight:800}.logout-actions{justify-content:flex-end;gap:.6rem;display:flex}.logout-cancel{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:12px;padding:.6rem .9rem}.logout-confirm{color:#212121;cursor:pointer;background:#ffc107;border:none;border-radius:12px;padding:.6rem .9rem;font-weight:700}.logout-cancel:hover{opacity:.9}.logout-confirm:hover{background:#ffb300}.brand-icon{background:#ffffff14;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex;box-shadow:0 6px 16px #0000001f}.brand-icon svg{width:24px;height:24px}.header-content p{opacity:.9;max-width:600px;font-size:1.1rem;font-weight:300;line-height:1.5}.app-main{flex:1;width:100%;max-width:none;margin:0;padding:2rem}.workbench{grid-template-columns:1fr 1fr;align-items:start;gap:1.25rem;display:grid}.left-pane{flex-direction:column;gap:.75rem;display:flex}.right-pane{max-height:calc(100vh - 6rem);position:sticky;top:1rem;overflow:auto}.controls{background:#fff;border:1px solid #e7e7e7;border-radius:8px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:1rem;margin-bottom:1.5rem;padding:1.25rem;display:flex;box-shadow:0 2px 8px #00000014}.input-row{width:100%;display:block}.input-row.two-col{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.75rem 1rem;display:grid}.input-row.single-col{width:100%;margin-bottom:.75rem;display:block}.input-group{flex-direction:column;gap:.4rem;min-width:0;display:flex}.input-label{color:#0f1111;font-size:.85rem;font-weight:600}.input-control{color:#0f1111;background:#fff;border:1px solid #d5d9d9;border-radius:8px;padding:.6rem .85rem;font-size:.9rem;transition:all .2s}.input-control:focus{border-color:#f90;outline:none;box-shadow:0 0 0 2px #f903}.input-control:disabled{color:#767676;background:#f7f7f7}.input-hint{color:#565959;font-size:.75rem}.locale-selector{align-items:center;gap:.75rem;display:flex}.locale-selector label{color:#0f1111;font-size:.9rem;font-weight:500}.locale-selector select{color:#0f1111;background:#fff;border:1px solid #d5d9d9;border-radius:8px;min-width:150px;padding:.75rem 1rem;font-size:.9rem;transition:all .2s}.locale-selector select:focus{border-color:#f90;outline:none;box-shadow:0 0 0 2px #f903}.action-buttons{flex-wrap:wrap;gap:.75rem;display:flex}.action-buttons button{cursor:pointer;border:none;border-radius:8px;min-width:120px;padding:.75rem 1.5rem;font-size:.9rem;font-weight:500;transition:all .2s;position:relative;overflow:hidden}.process-btn{color:#fff;background:#f90;box-shadow:0 2px 4px #ff99004d}.process-btn:hover:not(:disabled){background:#e88b00;transform:translateY(-1px);box-shadow:0 4px 8px #f906}.download-btn{color:#fff;background:#146eb4;box-shadow:0 2px 4px #146eb44d}.download-btn:hover{background:#0f5a96;transform:translateY(-1px);box-shadow:0 4px 8px #146eb466}.clear-btn{color:#fff;background:#d13212;box-shadow:0 2px 4px #d132124d}.clear-btn:hover:not(:disabled){background:#b12704;transform:translateY(-1px);box-shadow:0 4px 8px #d1321266}button:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.drop-area-container{margin-bottom:1rem}.drop-area{text-align:center;cursor:pointer;background:#fff;border:2px dashed #d5d9d9;border-radius:8px;min-height:60px;padding:.75rem;transition:all .3s;position:relative;overflow:hidden}.drop-area:before{content:"";background:linear-gradient(90deg,#0000,#ff99001a,#0000);width:100%;height:100%;transition:left .5s;position:absolute;top:0;left:-100%}.drop-area:hover:before,.drop-area.drag-active:before{left:100%}.drop-area:hover,.drop-area.drag-active{background:#fff8f0;border-color:#f90;transform:translateY(-2px);box-shadow:0 8px 25px #ff990026}.drop-content{z-index:1;flex-direction:column;align-items:center;gap:.25rem;display:flex;position:relative}.drop-icon{opacity:.7;font-size:1.8rem}.login-page{background:linear-gradient(#0a0a0a 0%,#0d0d0d 40%,#0a0a0a 100%);flex-direction:column;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";filter:blur(14px);pointer-events:none;background:radial-gradient(720px 320px at 50% 0,#ffffff14,#fff0);width:1400px;height:520px;position:absolute;top:-120px;left:50%;transform:translate(-50%)}.login-page:after{content:"";opacity:.25;pointer-events:none;background-image:repeating-linear-gradient(#ffffff0a 0,#ffffff05 2px,#0000 4px);position:absolute;inset:0;-webkit-mask-image:radial-gradient(640px 320px at 50% 62%,#000000e6,#0000);mask-image:radial-gradient(640px 320px at 50% 62%,#000000e6,#0000)}.login-header{color:#fafafa;background:linear-gradient(135deg,#212121 0%,#1a1a1a 100%);border-bottom:2px solid #ffc107;padding:2rem 0;position:relative}.login-header-inner{max-width:960px;margin:0 auto;padding:0 1.25rem}.login-brand{align-items:baseline;gap:.75rem;display:flex}.login-title{letter-spacing:-.02em;background:linear-gradient(135deg,#ffc107 0%,#ffb300 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2.4rem;font-weight:800}.login-tag{color:#ffc107;text-transform:uppercase;border:1px solid #ffc107;border-radius:16px;padding:.25rem .6rem;font-size:.85rem}.login-sub{opacity:.85;margin-top:.5rem}.login-center{flex:1;justify-content:center;align-items:center;padding:2rem 1rem;display:flex;position:relative}.login-card{background:linear-gradient(#fff 0%,#fafafa 100%);border:1px solid #2121211f;border-radius:16px;outline:1px solid #ffc1071f;width:100%;max-width:440px;padding:1.5rem;transition:box-shadow .2s,transform .1s,outline-color .2s;box-shadow:0 16px 32px #0003}.login-card:hover{transform:translateY(-1px);box-shadow:0 20px 36px #00000038}.login-card:focus-within{outline-color:#ffc10759;box-shadow:0 0 0 3px #ffc10726}.login-fields{margin-bottom:.9rem}.login-label{color:#212121;font-size:.9rem;font-weight:600}.login-input{background:#fff;border:1px solid #d5d9d9;border-radius:10px;width:100%;padding:.7rem .9rem;font-size:.95rem;transition:box-shadow .2s,border-color .2s,transform 50ms}.login-input:hover{transform:translateY(-.5px)}.login-input:focus{border-color:#ffc107;outline:none;box-shadow:0 0 0 3px #ffc10740}.login-button{color:#212121;letter-spacing:.3px;cursor:pointer;background:#ffc107;border:none;border-radius:12px;width:100%;margin-top:.25rem;padding:.85rem 1rem;font-weight:700;transition:all .2s;position:relative;overflow:hidden}.login-button:after{content:"";filter:blur(.5px);background:linear-gradient(90deg,#fff0,#ffffff40,#fff0);width:30%;height:100%;position:absolute;top:0;left:-30%;transform:skew(-25deg)}.login-button:hover:after{animation:1.6s btnShine}.login-button:hover{background:#ffb300;transform:translateY(-1px);box-shadow:0 8px 20px #ffb30059}.login-button:active{transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-links{justify-content:space-between;margin-top:.75rem;display:flex}.login-link{color:#ffc107;font-size:.85rem;text-decoration:none;position:relative}.login-link:hover{opacity:.9}.login-link:after{content:"";background:#ffc107;width:0;height:2px;transition:width .2s;position:absolute;bottom:-2px;left:0}.login-link:hover:after{width:100%}.login-social{gap:8px;margin-top:.75rem;display:flex}.social-btn{background:#212121;border:1px solid #ffffff40;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .1s;display:inline-flex;box-shadow:0 8px 20px #00000040}.social-btn:hover{background:#1a1a1a}.social-btn:active{transform:scale(.98)}.login-error{color:#d13212;text-align:center;margin-top:.75rem}.login-center:before{content:"";filter:blur(70px);pointer-events:none;background:radial-gradient(closest-side,#ffc1071a,#ffc10700);border-radius:50%;width:600px;height:600px;position:absolute}@keyframes auroraMove{0%{opacity:.8;transform:translate(-20%,-10%)rotate(0)}50%{opacity:.9;transform:translate(10%,5%)rotate(180deg)}to{opacity:.8;transform:translate(-20%,-10%)rotate(360deg)}}@keyframes btnShine{0%{left:-30%}50%{left:110%}to{left:110%}}.drop-area p,.drop-hint{display:none}.file-list{background:#fff;border:1px solid #e7e7e7;border-radius:8px;margin-top:.75rem;padding:1rem;box-shadow:0 2px 8px #0000000f}.file-list h3{color:#0f1111;align-items:center;gap:.4rem;margin-bottom:1rem;font-size:1.1rem;font-weight:600;display:flex}.file-list h3:before{content:"📋";font-size:1rem}.file-item{background:#fafafa;border:1px solid #e7e7e7;border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:.875rem;transition:all .2s;display:flex}.file-item:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}.file-item.processing{background:#f0f8ff;border-color:#146eb4;box-shadow:0 0 0 2px #146eb41a}.file-item.completed{background:#f0fff4;border-color:#067d62;box-shadow:0 0 0 2px #067d621a}.file-item.error{background:#fff5f5;border-color:#d13212;box-shadow:0 0 0 2px #d132121a}.file-info{flex-wrap:wrap;flex:1;align-items:center;gap:1.5rem;display:flex}.file-name{color:#0f1111;font-size:.85rem;font-weight:600}.file-size,.estimated-rows{color:#565959;background:#f0f2f2;border-radius:4px;padding:.25rem .5rem;font-size:.85rem}.snapshot-chip{color:#0f172a;background:#fde68a;border:1px solid #f59e0b;border-radius:999px;padding:.25rem .5rem;font-size:.85rem}.snapshot-chip.warn{color:#7f1d1d;background:#fecaca;border-color:#dc2626}.report-type{text-transform:uppercase;letter-spacing:.5px;border-radius:20px;padding:.4rem .8rem;font-size:.75rem;font-weight:600}.login-v2{background:radial-gradient(1600px 600px at 50% -200px,#0d0d0d 0%,#0a0a0a 45% 100%)}.login-v2:after{content:"";opacity:.22;pointer-events:none;background-image:radial-gradient(100% 60% at 50% 0,#ffffff14,#fff0),repeating-linear-gradient(#ffffff0a 0,#ffffff05 2px,#0000 4px);position:absolute;inset:0;-webkit-mask-image:radial-gradient(720px 360px at 50% 58%,#000000e6,#0000);mask-image:radial-gradient(720px 360px at 50% 58%,#000000e6,#0000)}.login-v2 .login-center:before{background:radial-gradient(closest-side,#ffc10724,#ffc10700)}.login-v2 .login-hero{transform-style:preserve-3d;grid-template-columns:1fr;place-items:center;display:grid;position:relative}.login-v2 .login-hero:before{content:"";filter:blur(10px);background:linear-gradient(#ffffff40,#fff0);width:60px;height:260px;position:absolute;top:-120px}.login-v2 .login-grid3d{pointer-events:none;width:80vw;max-width:960px;height:52vh;transform:perspective(900px)rotateX(58deg)rotateY(calc(var(--mx,0)*6deg));opacity:.32;will-change:background-position,transform;background-image:repeating-linear-gradient(0deg,#ffffff24 0 2px,#0000 2px 40px),repeating-linear-gradient(90deg,#ffffff24 0 2px,#0000 2px 40px);background-position:0 0,0 0;animation:14s linear infinite gridScroll;position:absolute;bottom:-140px;-webkit-mask-image:radial-gradient(70% 60%,#000 40%,#0000 100%);mask-image:radial-gradient(70% 60%,#000 40%,#0000 100%)}.login-v2 .glow-halo{filter:blur(24px);opacity:.25;pointer-events:none;background:radial-gradient(closest-side,#ffc72c2e,#ffc72c00);border-radius:50%;width:52vw;max-width:860px;height:52vw;max-height:860px;animation:16s ease-in-out infinite haloPulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-52%)}.login-v2 .data-flow-bg{transform:translateX(-50%)perspective(1100px)rotateX(74deg)rotateY(calc(var(--mx,0)*6deg));pointer-events:none;opacity:.32;mix-blend-mode:screen;z-index:1;width:92vw;max-width:1180px;height:40vh;position:fixed;bottom:-6px;left:50%}.login-v2 .data-flow-bg g{transform-box:fill-box;transform-origin:50%}.login-v2 .data-flow-bg .df-area{fill:url(#amberFade);opacity:.28;animation:10s ease-in-out infinite areaPulse}.login-v2 .data-flow-bg .df-line{fill:none;stroke:#ffc107;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.7;stroke-dasharray:8 14;animation:14s linear infinite dfDash,8s ease-in-out infinite linePulse}.login-v2 .data-flow-bg .df-wave{fill:none;stroke:#ffc107;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.85;stroke-dasharray:12 22;animation:12s linear infinite dfDash,9s ease-in-out infinite linePulse}.login-v2 .data-flow-bg .df-wave-b{stroke-opacity:.6;animation-delay:1s}.login-v2 .data-flow-bg .df-wave-c{stroke-opacity:.5;animation-delay:2s}.login-v2 .data-flow-bg .df-layer.back{opacity:.5;animation:28s ease-in-out infinite waveScrollBack,11s ease-in-out infinite waveGroup;transform:translateZ(-70px)}.login-v2 .data-flow-bg .df-layer.mid{opacity:.7;animation:20s ease-in-out infinite waveScrollMid,10s ease-in-out infinite waveGroup;transform:translateZ(-40px)}.login-v2 .data-flow-bg .df-layer.front{opacity:.9;animation:14s ease-in-out infinite waveScrollFront,9s ease-in-out infinite waveGroup;transform:translateZ(-10px)}.login-v2 .data-flow-bg .df-glints .df-glint{fill:none;stroke:#ffffff73;stroke-width:1.2px;stroke-linecap:round;stroke-dasharray:6 60;filter:drop-shadow(0 0 6px #fff6);animation:8s linear infinite glintRun}.login-v2 .data-flow-bg .df-line-b{stroke-opacity:.55;animation-delay:1.6s}.login-v2 .data-flow-bg .df-line-c{stroke-opacity:.45;animation-delay:3.2s}.login-v2 .data-flow-bg .df-node{fill:#ffc107;opacity:.9;filter:drop-shadow(0 0 6px #ffc10780);animation:3.6s ease-in-out infinite nodeBlink}.login-v2 .data-flow-bg .n2{animation-delay:.6s}.login-v2 .data-flow-bg .n3{animation-delay:1.2s}.login-v2 .data-flow-bg .n4{animation-delay:1.8s}.login-v2 .data-flow-bg .df-flows .df-flow{stroke:#ffc1078c;stroke-width:1.8px;stroke-linecap:round;stroke-dasharray:2 10;animation:6s linear infinite dfFlow}.login-v2 .data-flow-bg .df-flows{transform:translateZ(-40px)}.login-v2 .data-flow-bg .df-layer{animation:9s ease-in-out infinite waveGroup,14s ease-in-out infinite waveShift}.login-v2 .linechart-bg{display:none!important}.login-v2 .linechart-bg .lc-parallax{display:none}.login-v2 .linechart-bg .lc-path{stroke-dasharray:8 12;animation:18s linear infinite dashMove,6s ease-in-out infinite linePulse}.login-v2 .login-center,.login-v2 .login-hero{z-index:2;position:relative}.login-v2 .side-panels{display:none}.login-v2 .panel{height:100%;position:relative}.login-v2 .panel.left{justify-self:start}.login-v2 .panel.right{justify-self:end}.login-v2 .panel .panel-glow{filter:blur(14px);opacity:.18;background:radial-gradient(60% 60%,#ffc72c40,#ffc72c00);border-radius:20px;width:18vw;max-width:280px;position:absolute;top:8vh;bottom:10vh;transform:perspective(900px)rotateY(-18deg)translate(6vw)}.login-v2 .panel.right .panel-glow{transform:perspective(900px)rotateY(18deg)translate(-6vw)}.login-v2 .panel .panel-lines{opacity:.22;background-image:repeating-linear-gradient(90deg,#ffc72c1f 0 1px,#0000 1px 20px);width:20vw;max-width:300px;animation:24s ease-in-out infinite panelDrift;position:absolute;top:12vh;bottom:12vh;transform:perspective(900px)rotateY(-22deg)skew(-4deg)}.login-v2 .panel.right .panel-lines{transform:perspective(900px)rotateY(22deg)skew(4deg)}.login-v2 .panel .panel-arc{opacity:.25;border:1px solid #ffc72c33;border-radius:999px;width:32vw;height:32vw;animation:18s ease-in-out infinite arcBreath;position:absolute;top:50%;left:50%;transform:translate(-65%,-48%)rotateY(65deg);box-shadow:0 0 18px #ffc72c2e}.login-v2 .panel.right .panel-arc{transform:translate(-35%,-48%)rotateY(-65deg)}.login-v2 .linechart,.login-v2 .linechart-full,.login-v2 .lc-left,.login-v2 .lc-right,.login-v2 .linechart .lc-area,.login-v2 .linechart .lc-dot{display:none}.login-v2 .orbit-arc{pointer-events:none;border:1px solid #ffc72c40;border-radius:999px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(0)translateZ(0);box-shadow:0 0 20px #ffc72c33}.login-v2 .arc-1{opacity:.35;width:38vw;height:38vw;animation:24s linear infinite arcSpin1}.login-v2 .arc-2{opacity:.28;width:26vw;height:26vw;animation:18s linear infinite arcSpin2}.login-v2 .light-columns{pointer-events:none;position:absolute;inset:0}.login-v2 .light-columns .column{filter:blur(2px);opacity:.5;background:linear-gradient(#ffc72c99,#ffc72c33,#ffc72c00);border-radius:999px;width:.6vw;max-width:8px;height:0;animation:20s ease-in-out infinite columnPulse;position:absolute;bottom:10vh}.login-v2 .light-columns .c1{animation-delay:0s;left:36%}.login-v2 .light-columns .c2{animation-delay:4s;left:52%}.login-v2 .light-columns .c3{animation-delay:8s;left:61%}.login-v2 .light-columns .c4{animation-delay:12s;left:44%}.light-ripple2{filter:blur(16px);opacity:.8;pointer-events:none;background:radial-gradient(closest-side,#ffc72c47,#ffc72c00);border-radius:999px;width:10vw;min-width:160px;height:10vw;min-height:160px;animation:1.8s ease-out forwards rippleExpand2;position:absolute;transform:translate(-50%,-50%)scale(.2);box-shadow:0 0 60px #ffc72c40}.light-ripple{filter:blur(10px);opacity:.9;pointer-events:none;background:radial-gradient(closest-side,#ffc72c73,#ffc72c00);border-radius:999px;width:6vw;min-width:120px;height:6vw;min-height:120px;animation:1.4s ease-out forwards rippleExpand;position:absolute;transform:translate(-50%,-50%)scale(.25);box-shadow:0 0 40px #ffc72c59}.login-v2 .login-grid3d:after{content:"";filter:blur(14px);background:radial-gradient(closest-side,#ffc1071f,#ffc10700);position:absolute;inset:0}.login-v2 .login-grid3d:before{content:"";filter:blur(.6px);opacity:.8;background:linear-gradient(#ffffff8c,#fff0);border-radius:999px;width:3px;height:120px;position:absolute;top:-50px;left:50%;transform:translate(-50%)}.login-v2 .side-panels{transform-style:preserve-3d}.login-v2 .login-card{color:#fafafa;background:linear-gradient(#0f1111 0%,#151a1f 100%);border:1px solid #ffcc0040;border-radius:18px;outline:1px solid #ffcc0026;max-width:380px;box-shadow:0 24px 60px #00000073}.login-v2 .login-card:hover{box-shadow:0 28px 68px #00000080}.login-v2 .login-label{color:#ededed;opacity:.95;font-size:.85rem;font-weight:700}.login-v2 .login-input{color:#fafafa;background:#ffffff0f;border:1px solid #ffffff26;border-radius:12px}.login-v2 .login-input:focus{background:#ffffff1f}.login-v2 .social-btn{background:#1a1f24;border:1px solid #ffffff2e;box-shadow:0 8px 20px #00000059}.login-v2 .login-side-chips{display:none}@keyframes gridScroll{0%{background-position:0 0,0 0}to{background-position:0 64px,0 64px}}@keyframes haloPulse{0%,to{opacity:.22;transform:translate(-50%,-52%)scale(1)}50%{opacity:.28;transform:translate(-50%,-52%)scale(1.05)}}@keyframes bgSlide{0%{transform:translate(-6%)translateY(0)}50%{transform:translate(6%)translateY(-1vh)}to{transform:translate(-6%)translateY(0)}}@keyframes rippleExpand{0%{opacity:.9;transform:translate(-50%,-50%)scale(.25)}60%{opacity:.35;transform:translate(-50%,-50%)scale(1.6)}to{opacity:0;transform:translate(-50%,-50%)scale(2.2)}}@keyframes rippleExpand2{0%{opacity:.8;transform:translate(-50%,-50%)scale(.2)}70%{opacity:.25;transform:translate(-50%,-50%)scale(2.1)}to{opacity:0;transform:translate(-50%,-50%)scale(2.8)}}@keyframes panelDrift{0%,to{opacity:.22;transform:perspective(900px)rotateY(-22deg)skew(-4deg)translateY(0)}50%{opacity:.28;transform:perspective(900px)rotateY(-24deg)skew(-6deg)translateY(-1vh)}}@keyframes arcBreath{0%,to{opacity:.25;transform:translate(-65%,-48%)rotateY(65deg)scale(1)}50%{opacity:.33;transform:translate(-65%,-48%)rotateY(65deg)scale(1.06)}}@keyframes arcSpin1{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}@keyframes arcSpin2{0%{transform:translate(-50%,-50%)rotate(360deg)}to{transform:translate(-50%,-50%)rotate(0)}}@keyframes columnPulse{0%,to{opacity:0;height:0}50%{opacity:.55;height:24vh}}@keyframes dashMove{0%{stroke-dashoffset:0}to{stroke-dashoffset:-600px}}@keyframes dfDash{0%{stroke-dashoffset:0}to{stroke-dashoffset:-800px}}@keyframes nodeBlink{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes dfFlow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-120px}}@keyframes waveGroup{0%,to{transform:translateY(0)}50%{transform:translateY(-1.6vh)}}@keyframes waveShift{0%,to{transform:translate(0)}50%{transform:translate(-2.2vw)}}@keyframes waveScrollFront{0%{transform:translateZ(-10px)translate(0)}50%{transform:translateZ(-10px)translate(-2.5vw)}to{transform:translateZ(-10px)translate(0)}}@keyframes waveScrollMid{0%{transform:translateZ(-40px)translate(0)}50%{transform:translateZ(-40px)translate(-1.6vw)}to{transform:translateZ(-40px)translate(0)}}@keyframes waveScrollBack{0%{transform:translateZ(-70px)translate(0)}50%{transform:translateZ(-70px)translate(-1vw)}to{transform:translateZ(-70px)translate(0)}}@keyframes glintRun{0%{stroke-dashoffset:0}to{stroke-dashoffset:-400px}}@keyframes convPulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.75;transform:scale(1.08)}}@keyframes marqueeX{0%{transform:translate(-1000px)}to{transform:translate(1000px)}}@keyframes usdFloat{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-4px)scale(1.05)}}@keyframes dataGlow{0%,to{opacity:.95}50%{opacity:1}}@keyframes hoverY{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes hoverXY{0%{transform:translate(0)translateY(0)scale(1)}50%{transform:translate(6px)translateY(-6px)scale(1.05)}to{transform:translate(0)translateY(0)scale(1)}}@keyframes pathMove{to{offset-distance:100%}}@keyframes linePulse{0%,to{opacity:.75}50%{opacity:.95}}.login-v2 .data-badges{display:none}.login-v2 .data-badges .badge:before{content:"◦";color:#151a1f;margin-right:6px;display:inline-block}@keyframes badgeDrift{0%,to{opacity:.85;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}@keyframes areaPulse{0%,to{opacity:.18}50%{opacity:.28}}@keyframes dotPulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.25)}}@keyframes lineThrob{0%,to{stroke-width:3px}50%{stroke-width:4px}}@keyframes lineRiseLeft{0%{transform:perspective(900px)rotateY(-16deg)skew(-3deg)translateY(0)}50%{transform:perspective(900px)rotateY(-12deg)skew(-2deg)translateY(-2vh)}to{transform:perspective(900px)rotateY(-16deg)skew(-3deg)translateY(0)}}@keyframes lineRiseRight{0%{transform:perspective(900px)rotateY(16deg)skew(3deg)translateY(0)}50%{transform:perspective(900px)rotateY(12deg)skew(2deg)translateY(-2vh)}to{transform:perspective(900px)rotateY(16deg)skew(3deg)translateY(0)}}@keyframes etlFlow{0%{opacity:.6;transform:translateZ(-60px)translate(0)}50%{opacity:.7;transform:translateZ(-60px)translate(.6vw)}to{opacity:.6;transform:translateZ(-60px)translate(0)}}@keyframes layerDrift{0%,to{transform:translateZ(-60px)translate(0)translateY(0)}50%{transform:translateZ(-60px)translate(.8vw)translateY(-.6vh)}}.login-v2 .data-badges .badge:first-child{animation-delay:0s}.login-v2 .data-badges .badge:nth-child(2){animation-delay:.6s}.login-v2 .data-badges .badge:nth-child(3){animation-delay:1.2s}@media (max-width:900px){.login-v2 .linechart,.login-v2 .data-badges,.login-v2 .linechart-bg{display:none}}.report-type.business{color:#146eb4;background:#e3f2fd;border:1px solid #146eb4}.report-type.ppc{color:#7b1fa2;background:#f3e5f5;border:1px solid #7b1fa2}.report-type.inventory{color:#067d62;background:#e8f5e8;border:1px solid #067d62}.report-type.settlement{color:#f90;background:#fff3e0;border:1px solid #f90}.report-type.unknown{color:#565959;background:#f5f5f5;border:1px solid #565959}.file-status{align-items:center;gap:.75rem;display:flex}.progress-bar{background:#e7e7e7;border-radius:3px;width:120px;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#146eb4,#f90);border-radius:3px;height:100%;transition:width .3s}.status-icon{font-size:1.5rem}.error-message{color:#d13212;background:#ffebee;border-left:4px solid #d13212;border-radius:6px;width:100%;margin-top:.75rem;padding:.75rem;font-size:.9rem}.preview-container{background:#fff;border:1px solid #e7e7e7;border-radius:12px;padding:0;overflow:hidden;box-shadow:0 4px 12px #00000014}.preview-container h3{color:#0f1111;background:#f7f8fa;border-bottom:1px solid #e7e7e7;align-items:center;gap:.5rem;margin:0;padding:1.5rem;font-size:1.4rem;font-weight:600;display:flex}.preview-container h3:before{content:"👁️";font-size:1.3rem}.file-preview{border:none;border-radius:0;margin-bottom:0;overflow:hidden}.file-preview:not(:last-child){border-bottom:2px solid #e7e7e7}.preview-header{background:#fafafa;border-bottom:1px solid #e7e7e7;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.5rem;display:flex}.preview-title{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.action-buttons{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.preview-header h4{color:#0f1111;margin:0;font-size:1.2rem;font-weight:600}.download-csv-btn{color:#fff;cursor:pointer;background:#067d62;border:none;border-radius:6px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.download-csv-btn:hover{background:#055a4e;transform:translateY(-1px);box-shadow:0 4px 8px #067d624d}.gcs-create-btn{color:#fff;cursor:pointer;background:#4285f4;border:none;border-radius:6px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.gcs-create-btn:disabled{cursor:not-allowed;opacity:.6;background:#ccc}.bq-create-btn{color:#fff;cursor:pointer;background:#ea4335;border:none;border-radius:6px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.bq-create-btn:hover:not(:disabled){background:#d33b2c;transform:translateY(-1px);box-shadow:0 4px 8px #ea43354d}.bq-create-btn:disabled{cursor:not-allowed;opacity:.6;background:#ccc}.preview-stats{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.row-count,.col-count,.sum-sales,.sum-units{color:#565959;background:#f0f2f2;border-radius:4px;padding:.3rem .6rem;font-size:.85rem;font-weight:500}.sum-sales{color:#2e7d32;background:#e8f5e8}.sum-units{color:#1976d2;background:#e3f2fd}.test-badge{color:#fff;text-transform:uppercase;letter-spacing:.5px;background:#f90;border-radius:3px;padding:.2rem .4rem;font-size:.7rem;font-weight:600}.quality-warnings{background:#fff8e1;border-bottom:1px solid #e7e7e7;border-left:4px solid #f90;padding:1.5rem}.quality-warnings h5{color:#e65100;margin-bottom:.75rem;font-size:1rem;font-weight:600}.warning-item{color:#e65100;margin-bottom:.5rem;padding:.25rem 0;font-size:.9rem}.table-container{max-height:420px;overflow:auto}.schema-overview{background:#fff;border-bottom:1px solid #e7e7e7;padding:0 1.5rem 1rem}.schema-header{color:#0f1111;margin-bottom:.5rem;font-weight:600}.schema-list{white-space:nowrap;gap:.5rem;width:100%;display:inline-flex;overflow-x:auto}.schema-field{background:#fafafa;border:1px solid #e7e7e7;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .6rem;display:inline-flex}.schema-name{color:#0f1111;font-weight:600}.null-rate{color:#565959;font-size:.75rem}.preview-placeholder .placeholder-body{background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:auto;padding:0;display:flex}.placeholder-icon{opacity:.6;font-size:2rem}.placeholder-title{color:#333;font-weight:600}.placeholder-sub{color:#6c757d;text-align:center;font-size:1rem}.brand-badge{color:#f90;letter-spacing:.2px;background:#ff990014;border:1px solid #f90;border-radius:999px;margin-top:6px;padding:4px 10px;font-size:.85rem;font-weight:600;display:inline-block}.agent-suggest{color:#0f1111;cursor:pointer;opacity:.85;background:0 0;border:none;margin-top:8px;padding:2px 4px;font-size:.9rem;font-weight:500}.agent-suggest:hover{color:#f90;opacity:1;text-underline-offset:3px;text-decoration:underline}.placeholder-skeleton{display:none}.preview-table{border-collapse:collapse;width:100%;font-size:.85rem}.preview-table th,.preview-table td{text-align:left;vertical-align:top;white-space:nowrap;border-bottom:1px solid #e7e7e7;min-width:160px;padding:1rem .75rem}.preview-table th{z-index:10;color:#0f1111;background:#f7f8fa;font-weight:600;position:sticky;top:0}.header-content{flex-direction:column;gap:.5rem;display:flex}.field-name{color:#0f1111;font-weight:600}.field-type{text-transform:uppercase;letter-spacing:.3px;border-radius:4px;padding:.2rem .4rem;font-size:.75rem;font-weight:500}.field-type.string{color:#146eb4;background:#e3f2fd}.field-type.int64{color:#067d62;background:#e8f5e8}.field-type.float64{color:#7b1fa2;background:#f3e5f5}.field-type.date{color:#f90;background:#fff3e0}.field-type.bool{color:#d13212;background:#ffebee}.cell-content{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.null-value{color:#999;opacity:.7;font-style:italic}.more-columns,.more-rows{color:#565959;text-align:center;font-style:italic}.more-rows td{background:#f7f8fa;padding:1.5rem;font-weight:500}.profile-summary{background:#f7f8fa;flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.profile-item{color:#0f1111;font-size:.9rem}.profile-item strong{color:#0f1111;font-weight:600}.null-percentages{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.null-stat{color:#0f1111;background:#e7e7e7;border-radius:4px;padding:.25rem .6rem;font-size:.8rem;font-weight:500}@media (max-width:768px){.workbench{grid-template-columns:1fr}.right-pane{max-height:none;position:static;overflow:visible}.app-header{padding:1.5rem 0}.header-content{padding:0 1rem}.app-header h1{font-size:2.2rem}.logo-section{flex-direction:column;align-items:flex-start;gap:.5rem}.app-main{padding:1rem}.controls{flex-direction:column;align-items:stretch}.action-buttons{justify-content:center}.drop-area{padding:2rem 1rem}.file-info{flex-direction:column;align-items:flex-start;gap:.75rem}.preview-header{flex-direction:column;align-items:flex-start}.preview-stats{justify-content:flex-start}.preview-title{justify-content:space-between;width:100%}}@media (max-width:480px){.app-header h1{font-size:1.8rem}.header-content p{font-size:1rem}.tagline{padding:.2rem .6rem;font-size:.8rem}}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.process-btn:disabled{animation:1.5s ease-in-out infinite pulse}*{transition:color .2s,background-color .2s,border-color .2s,transform .2s,box-shadow .2s}.control-toolbar{justify-content:center;align-items:center;gap:1rem;display:flex}.toolbar-left{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.toolbar-right{align-items:center;display:flex}.toolbar-right .drop-area.compact{width:320px}.drop-area.compact{color:#0f1111;background:#fff;border:2px solid #0f1111;border-radius:8px;min-height:60px;padding:.75rem 1rem;box-shadow:0 4px 12px #00000014}.drop-area.compact:hover,.drop-area.compact.drag-active{background:#f7f7f7;border-color:#0f1111;box-shadow:0 6px 16px #0000001f}.drop-area.compact:before{display:none}.drop-area.compact .drop-content{flex-direction:row;align-items:center;gap:.6rem}.drop-area.compact .drop-icon{opacity:.9;font-size:1.8rem}.drop-area.compact .drop-right{flex-direction:column;gap:.15rem;display:flex}.drop-area.compact .drop-hero{grid-template-rows:auto auto auto;row-gap:2px;display:grid}.drop-area.compact .drop-heading{color:#0f1111;letter-spacing:.1px;margin-bottom:.1rem;font-size:1.1rem;font-weight:800}.drop-area.compact .drop-badge{color:#0f1111;text-transform:lowercase;letter-spacing:.3px;background:#f90;border-radius:999px;padding:.1rem .55rem;font-size:1.05rem;font-weight:800;box-shadow:0 2px 6px #ff990080}.drop-area.compact .drop-sep{color:#ffb84d;font-size:1.05rem;font-weight:800}.drop-area.compact .drop-meta{color:#565959;align-items:center;gap:.3rem;font-size:.7rem;display:flex}.drop-area.compact .drop-meta .dot{opacity:.9}.drop-area.compact .drop-selected{align-items:center;gap:.4rem;display:flex}.drop-area.compact .selected-count{color:#0f1111;background:#f90;border-radius:12px;padding:.05rem .45rem;font-weight:700}.drop-area.compact .selected-text{color:#0f1111;opacity:.95;font-size:.75rem}.input-label{font-size:.85rem}.input-control,.locale-selector select{border-radius:6px;padding:.55rem .75rem;font-size:.85rem}.action-buttons button{min-width:100px;padding:.6rem 1.1rem;font-size:.85rem}@media (max-width:768px){.control-toolbar{flex-direction:column;align-items:stretch}.toolbar-left{justify-content:space-between}.toolbar-right{justify-content:center}}.toolbar-center{flex-direction:column;align-items:center;gap:.75rem;display:flex}.toolbar-center .action-buttons{justify-content:center}.toolbar-center .action-buttons.below{margin-top:.5rem}.workbench{align-items:stretch}.controls{min-height:380px;animation:.3s ease-out fadeUp}.preview-container{min-height:380px}.preview-placeholder .placeholder-body{animation:.3s ease-out fadeUp}.placeholder-icon{animation:3s ease-in-out infinite gentleFloat}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes gentleFloat{0%{transform:translateY(0)}50%{transform:translateY(-4px)}to{transform:translateY(0)}}.merge-bar{color:#fff;cursor:pointer;background:#111827;border:1px solid #00000014;border-radius:12px;justify-content:space-between;align-items:center;margin:10px 0 8px;padding:10px 14px;transition:all .16s;display:flex;box-shadow:0 8px 24px #00000014}.merge-bar:hover{filter:brightness(1.05)}.merge-bar[aria-pressed=true],.merge-bar.active{color:#0f172a;background:linear-gradient(90deg,#facc15 0%,#0f172a 100%);border-color:#0f172a}.merge-bar-left{align-items:center;gap:10px;display:flex}.merge-icon{background:#ffffff1f;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.merge-title{font-weight:600}.merge-bar-right .merge-status{background:#ffffff1f;border:1px solid #fff3;border-radius:8px;padding:6px 10px;font-weight:600;display:inline-block}.merge-bar-right .merge-status.active{color:#facc15;background:#0f172a;border-color:#facc15}.merge-subbar{color:#fff;cursor:pointer;background:#111827;border:1px solid #00000014;border-radius:10px;justify-content:space-between;align-items:center;padding:8px 12px;transition:all .16s;display:flex}.merge-subbar:hover{filter:brightness(1.05)}.merge-subbar[aria-pressed=true],.merge-subbar.active{color:#0f172a;background:linear-gradient(90deg,#facc15 0%,#0f172a 100%);border-color:#0f172a}.merge-settings{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0f;border:1px solid #00000014;border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:10px;padding:12px;display:grid}.merge-settings .input-group .input-label{font-weight:600}.merge-settings .actions{align-items:flex-end;display:flex}.merge-now-btn{color:#0f172a;background:#facc15;border:1px solid #0f172a;border-radius:10px;height:36px;padding:0 12px;font-weight:600;transition:all .14s;box-shadow:0 8px 24px #0000001a}.merge-now-btn:hover{filter:brightness(1.05)}.merge-now-btn:disabled{opacity:.6;cursor:not-allowed}.snapshot-input label{color:#333;font-size:12px}.snapshot-input input,.snapshot-input select{background:#fff;border:1px solid #ddd;border-radius:3px;width:100%;padding:5px;font-size:12px}.snapshot-input.compact input,.snapshot-input.compact select{padding:7px;font-size:12px}@keyframes fullRise{0%{opacity:.38;transform:translateY(0)}50%{opacity:.48;transform:translateY(-2vh)}to{opacity:.38;transform:translateY(0)}}.multi-shop-merge{background:#f8f9fa;max-width:100vw;min-height:100vh;margin:0;padding:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.app-header{color:#fff;background:linear-gradient(135deg,#232f3e 0%,#131a22 100%);padding:1rem 0;position:relative;overflow:hidden;box-shadow:0 2px 8px #00000026}.app-header:before{content:"";pointer-events:none;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Ccircle cx='30' cy='30' r='2'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");position:absolute;inset:0}.header-content{z-index:1;max-width:1200px;margin:0 auto;padding:0 1.5rem;position:relative}.header-nav{z-index:2;position:absolute;top:.5rem;right:.75rem}.nav-group{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff14;border-radius:30px;gap:12px;padding:6px 8px;display:flex;box-shadow:0 6px 16px #0000002e}.nav-btn{color:#fff;cursor:pointer;will-change:transform,box-shadow;background:#ffffff1f;border:none;border-radius:22px;padding:.6rem 1.2rem;font-size:.88rem;font-weight:600;transition:all .25s;box-shadow:0 4px 12px #0000002e}.nav-btn:hover{opacity:.9}.nav-btn.active{color:#131a22;background:linear-gradient(135deg,#fc0 0%,#ffb84d 100%);box-shadow:0 6px 16px #ffcc0059}.nav-btn.inactive{opacity:.75}.logo-section{align-items:baseline;gap:.8rem;margin-bottom:.5rem;display:flex}.app-header h1{background:linear-gradient(135deg,#f90 0%,#ffb84d 100%);-webkit-text-fill-color:transparent;letter-spacing:-.02em;-webkit-background-clip:text;background-clip:text;font-size:2.2rem;font-weight:700}.tagline{color:#f90;text-transform:uppercase;letter-spacing:.5px;background:#ff99001a;border:1px solid #f90;border-radius:20px;padding:.25rem .75rem;font-size:.9rem;font-weight:500}.header-content p{opacity:.9;max-width:600px;margin:0;font-size:.95rem;font-weight:300;line-height:1.4}.workbench{grid-template-columns:26% 74%;align-items:start;gap:12px;max-width:100%;min-height:calc(100vh - 140px);margin:0;padding:8px 0 12px 12px;display:grid}.left-pane{background:#fff;border:1px solid #e9ecef;border-radius:6px;width:100%;max-width:none;height:fit-content;padding:6px;position:sticky;top:10px;overflow:hidden;box-shadow:0 1px 8px #0000000a}.right-pane{background:#fff;border:1px solid #e9ecef;border-radius:6px;min-height:calc(100vh - 160px);overflow:hidden;box-shadow:0 1px 8px #0000000a}.steps-wrapper{grid-template-columns:380px 1fr;gap:12px;height:100%;padding:12px;display:grid}.steps-panel{color:#e2e8f0;background:#0f172a;border:1px solid #1e293b;border-radius:8px;padding:12px;overflow-y:auto}.steps-title{margin-bottom:10px;font-size:14px;font-weight:700}.steps-timeline{position:relative}.step-item{grid-template-columns:24px 1fr;align-items:start;gap:8px;margin-bottom:10px;display:grid}.step-node{border-radius:50%;width:12px;height:12px;margin-top:4px}.step-line{background:#1e293b;width:2px;position:absolute;top:0;bottom:0;left:17px}.step-card{background:#0b1220;border:1px solid #243445;border-radius:6px;padding:8px}.step-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.step-name{font-size:12px;font-weight:600}.step-meta{color:#94a3b8;font-size:11px}.status-badge{border-radius:12px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.status-running{color:#1f2937;background:#fde68a}.status-success{color:#052e13;background:#86efac}.status-error{color:#3b0b0b;background:#fca5a5}.status-idle{color:#0f172a;background:#cbd5e1}.step-body{color:#cbd5e1;white-space:pre-wrap;font-size:12px}.console-panel{color:#eee;background:#1e1e1e;border:1px solid #2a2a2a;border-radius:8px;padding:12px;overflow-y:auto}.console-title{margin-bottom:10px;font-size:14px;font-weight:700}.console-line{margin-bottom:4px;font-family:monospace;font-size:12px}.console-time{color:#888}.console-info{color:#e9ecef}.console-warn{color:#fcc419}.console-error{color:#ff6b6b}.console-success{color:#51cf66}.builder-wrapper{grid-template-columns:260px 1fr;gap:12px;height:100%;display:grid}.builder-palette{color:#e2e8f0;background:#0f172a;border:1px solid #1e293b;border-radius:8px;padding:12px}.palette-title{margin-bottom:10px;font-size:14px;font-weight:700}.node-button{color:#cbd5e1;cursor:pointer;background:#0b1220;border:1px solid #243445;border-radius:6px;width:100%;margin-bottom:8px;padding:8px;font-size:12px;font-weight:700}.builder-canvas{background:#0b1220;border:1px solid #1e293b;border-radius:8px;position:relative;overflow:hidden}.wf-node{color:#0b1220;cursor:grab;-webkit-user-select:none;user-select:none;border-radius:8px;padding:8px 10px;font-size:12px;font-weight:700;position:absolute;box-shadow:0 6px 18px #00000059}.wf-node:active{cursor:grabbing}.node-trigger{background:#fde68a;border:1px solid #f59e0b}.node-sql{background:#93c5fd;border:1px solid #3b82f6}.node-bq{background:#86efac;border:1px solid #22c55e}.node-lark{background:#fca5a5;border:1px solid #ef4444}.wf-node .subtitle{color:#0b1220;font-size:10px;font-weight:600}.edge-svg{pointer-events:none;position:absolute;inset:0}.snapshot-input{margin-bottom:6px}.snapshot-input label{color:#333;margin-bottom:2px;font-size:12px;font-weight:600;display:block}.snapshot-input input{border:1px solid #ddd;border-radius:3px;width:100%;padding:5px;font-size:12px}.snapshot-input select{background:#fff;border:1px solid #ddd;border-radius:3px;width:100%;padding:5px;font-size:12px}.two-col-row{grid-template-columns:1fr 1fr;gap:5px;margin-bottom:6px;display:grid}.snapshot-input.compact input{padding:5px;font-size:11px}.snapshot-input.compact label{margin-bottom:2px;font-size:11px}.bq-config{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;margin-bottom:8px;padding:6px}.bq-action{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.advanced-toggle{justify-content:flex-end;margin:6px 0;display:flex}.icon-btn{color:#0d6efd;cursor:pointer;opacity:.8;background:0 0;border:none;justify-content:center;align-items:center;width:18px;height:18px;padding:0;display:inline-flex}.icon-btn .icon{font-size:15px;line-height:1}.icon-btn:hover{opacity:1}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.bq-create-btn,.gcs-create-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4285f4 0%,#34a853 100%);border:none;border-radius:4px;justify-content:center;align-items:center;gap:4px;min-width:120px;padding:8px 16px;font-size:12px;font-weight:600;transition:all .3s;display:flex;box-shadow:0 1px 4px #4285f44d}.gcs-create-btn{background:linear-gradient(135deg,#007bff 0%,#0056b3 100%);box-shadow:0 1px 4px #007bff4d}.bq-create-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #4285f466}.gcs-create-btn:hover:not(:disabled){background:linear-gradient(135deg,#0056b3 0%,#004085 100%);transform:translateY(-2px);box-shadow:0 4px 12px #007bff66}.bq-create-btn:disabled,.gcs-create-btn:disabled{cursor:not-allowed;box-shadow:none;background:#6c757d;transform:none}.bq-hint{color:#6c757d;margin-top:8px;font-size:12px;font-style:italic}.shop-uploads h3{color:#333;margin-bottom:6px;font-size:13px;font-weight:600}.shop-upload-area{margin-bottom:4px}.shop-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.shop-header-inline{border-bottom:1px solid #e9ecef;justify-content:space-between;align-items:center;margin-bottom:6px;padding-bottom:4px;display:flex}.shop-header h4,.shop-header-inline h4{color:#333;margin:0;font-size:13px;font-weight:600}.status-badge{display:none}.drop-area.compact.empty{background:#f8f9fa;border:2px dashed #dee2e6}.drop-area.compact.uploaded{background:#fff3cd;border:2px solid #ffc107}.drop-area.compact.processing{background:#cce5ff;border:2px solid #007bff}.drop-area.compact.completed{background:#d4edda;border:2px solid #28a745}.drop-area.compact.error{background:#f8d7da;border:2px solid #dc3545}.shop-dropzone{text-align:center;cursor:pointer;background:#fafafa;border:2px dashed #ddd;border-radius:6px;justify-content:center;align-items:center;min-height:28px;padding:4px 8px;transition:none;display:flex;position:relative}.shop-dropzone:hover{background:#fff8f0;border-color:#f39c12}.shop-dropzone.drag-active{background:#fff3e0;border-color:#f39c12}.dropzone-content{flex-direction:column;align-items:stretch;width:100%;display:flex;position:relative}.drop-placeholder{justify-content:center;align-items:center;width:100%;padding:4px 0;display:flex}.drop-content-horizontal{flex-direction:row;justify-content:flex-start;align-items:center;gap:6px;display:flex}.drop-icon{opacity:.6;margin-bottom:0;font-size:14px}.drop-text{text-align:left;flex-direction:row;align-items:center;gap:4px;display:flex}.shop-name-inline{color:#333;text-align:left;font-size:13px;font-weight:600}.file-info-row{justify-content:space-between;align-items:center;width:100%;padding:2px 0;display:flex}.file-info-row .file-name{text-align:left;color:#333;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:8px;font-size:.85rem;font-weight:500;overflow:hidden}.file-info-row .shop-name-inline{color:#666;white-space:nowrap;background:#f0f0f0;border-radius:3px;padding:2px 6px;font-size:.75rem;font-weight:500}.shop-name-placeholder{color:#888;background:#f8f8f8;border-radius:3px;margin-top:0;padding:1px 4px;font-size:.75rem;font-weight:500;display:inline-block}.drop-placeholder p{color:#666;text-align:left;margin:0;font-size:11px}.error-message{color:#721c24;background:#f8d7da;border-radius:4px;margin-top:8px;padding:8px;font-size:12px}.shop-mini-stats{color:#666;text-align:right;margin-top:6px;font-size:11px}.shop-mini-stats .stat-item{font-weight:500}.shop-mini-stats .separator{color:#999;padding:0 4px}.action-buttons{gap:15px;margin-top:30px;display:flex}.action-buttons button{cursor:pointer;border:none;border-radius:8px;flex:1;padding:14px 20px;font-size:14px;font-weight:600;transition:none;position:relative;overflow:hidden}.action-buttons button:before{display:none}.action-buttons button:disabled{opacity:.6;cursor:not-allowed}.action-buttons button:disabled:before{display:none}.primary{color:#fff;background:linear-gradient(135deg,#f39c12,#e67e22);box-shadow:0 4px 15px #f39c124d}.primary:hover:not(:disabled){background:linear-gradient(135deg,#e67e22,#d35400)}.secondary{color:#fff;background:linear-gradient(135deg,#34495e,#2c3e50);box-shadow:0 4px 15px #34495e4d}.secondary:hover:not(:disabled){background:linear-gradient(135deg,#2c3e50,#1a252f)}.processing-status{text-align:center;background:#e6f3ff;border-radius:4px;margin-top:20px;padding:15px}.spinner{border:2px solid #f3f3f3;border-top-color:#007bff;border-radius:50%;width:20px;height:20px;margin:0 auto 10px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.right-panel{background:#fff;border:1px solid #e9ecef;border-radius:12px;flex:1;width:100%;max-width:100%;min-height:500px;padding:30px;overflow-x:auto;box-shadow:0 2px 20px #00000014}.preview-placeholder{text-align:center;color:#6c757d;background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border:2px dashed #dee2e6;border-radius:8px;padding:80px 20px}.preview-placeholder h3{color:#495057;margin-bottom:15px;font-size:1.5rem;font-weight:300}.preview-placeholder p{color:#6c757d;margin:0;font-size:1rem}.export-options{background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border:2px solid #dee2e6;border-radius:12px;margin:25px 0;padding:25px;box-shadow:0 4px 12px #0000001a}.export-options h3{color:#495057;margin:0 0 10px;font-size:1.3rem;font-weight:600}.export-description{color:#6c757d;margin:0 0 20px;font-size:.95rem}.export-buttons{flex-wrap:wrap;gap:15px;margin-bottom:15px;display:flex}.export-btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:160px;padding:12px 24px;font-size:.95rem;font-weight:600;transition:all .3s;display:flex}.gcs-export-btn{color:#fff;background:linear-gradient(135deg,#007bff 0%,#0056b3 100%)}.gcs-export-btn:hover:not(:disabled){background:linear-gradient(135deg,#0056b3 0%,#004085 100%);transform:translateY(-2px);box-shadow:0 4px 12px #007bff4d}.bq-export-btn{color:#fff;background:linear-gradient(135deg,#28a745 0%,#1e7e34 100%)}.bq-export-btn:hover:not(:disabled){background:linear-gradient(135deg,#1e7e34 0%,#155724 100%);transform:translateY(-2px);box-shadow:0 4px 12px #28a7454d}.download-export-btn{color:#fff;background:linear-gradient(135deg,#6f42c1 0%,#5a2d91 100%)}.download-export-btn:hover:not(:disabled){background:linear-gradient(135deg,#5a2d91 0%,#4c1f78 100%);transform:translateY(-2px);box-shadow:0 4px 12px #6f42c14d}.export-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none!important;transform:none!important}.export-hints{margin-top:15px}.export-hint{color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:6px;margin:5px 0;padding:8px 12px;font-size:.9rem}.gcs-hint{color:#0c5460;background:#d1ecf1;border-color:#bee5eb}.bq-hint{color:#155724;background:#d4edda;border-color:#c3e6cb}@media (max-width:768px){.main-content{grid-template-columns:1fr;gap:15px}.left-panel{margin-bottom:20px;position:static}.workbench{padding:15px 10px 20px}}@media (max-width:1024px) and (min-width:769px){.main-content{grid-template-columns:32% 68%}}.input-label-row{justify-content:space-between;align-items:center;display:flex}.mapper-selector{margin-bottom:1rem}.mapper-select{color:#374151;cursor:pointer;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;padding:8px 12px;font-size:14px;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out}.mapper-select:hover:not(:disabled){border-color:#9ca3af}.mapper-select:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f61a}.mapper-select:disabled{color:#9ca3af;cursor:not-allowed;background-color:#f9fafb}.mapper-select option{color:#374151;padding:8px 12px}.mapper-selector .input-hint{color:#6b7280;margin-top:4px;font-size:12px;font-style:italic}
