:root{--bg-dark:#0f172a;--bg-gradient:linear-gradient(135deg,#0f172a,#1e293b);--primary:#9ca3af;--accent:#2dd4bf;--accent-glow:rgba(45,212,191,.3);--danger:#f87171;--text-main:#f8fafc;--text-muted:#cbd5e1;--glass-bg:hsla(0,0%,100%,.03);--glass-border:hsla(0,0%,100%,.1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;background:var(--bg-gradient);color:var(--text-main);min-height:100vh;display:flex;flex-direction:column}.glass-panel{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:24px;padding:3rem;box-shadow:0 25px 50px -12px rgba(0,0,0,.5)}.hero-title{font-size:3.5rem;font-weight:800;background:linear-gradient(90deg,#38bdf8,#818cf8,#2dd4bf);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:1rem;animation:bg-pan 5s infinite;background-size:200%}@keyframes bg-pan{0%{background-position:0}50%{background-position:100%}to{background-position:0}}.upload-box{border:2px dashed var(--glass-border);border-radius:16px;padding:4rem 2rem;text-align:center;transition:all .3s ease;cursor:pointer;position:relative;overflow:hidden}.upload-box.drag-active,.upload-box:hover{border-color:var(--accent);background:rgba(45,212,191,.05);box-shadow:0 0 20px var(--accent-glow)}.upload-icon{width:64px;height:64px;color:var(--accent);margin-bottom:1rem;transition:transform .3s ease}.upload-box:hover .upload-icon{transform:translateY(-5px) scale(1.05)}.btn-primary{background:var(--text-main);color:var(--bg-dark);border:none;padding:1rem 2rem;border-radius:8px;font-weight:600;font-size:1.1rem;cursor:pointer;transition:all .2s ease;margin-top:1.5rem;box-shadow:0 4px 14px 0 hsla(0,0%,100%,.39)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-primary:hover:not(:disabled){background:#fff;box-shadow:0 6px 20px hsla(0,0%,100%,.23)}.spinner{width:24px;height:24px;border-top:4px solid var(--text-muted);border:4px solid var(--text-muted);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.hidden{display:none!important}