*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:#f5f3ff;color:#111827;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input,button,textarea,select{font-family:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c4b5fd;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8b5cf6}input:focus,textarea:focus,select:focus{outline:none;border-color:#7c3aed!important;box-shadow:0 0 0 3px #7c3aed1f}button{transition:background .15s,opacity .15s,box-shadow .15s}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible{outline:2px solid #7c3aed;outline-offset:2px}@keyframes spin{to{transform:rotate(360deg)}}.layout-shell{display:flex;height:100vh;overflow:hidden}.app-sidebar{transition:transform .25s ease}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:40}.mobile-topbar{display:none;align-items:center;gap:12px;padding:12px 16px;background:#1e1b4b;border-bottom:1px solid rgba(165,180,252,.15);flex-shrink:0;z-index:10}.hamburger-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:none;background:#8b5cf633;color:#a5b4fc;cursor:pointer;flex-shrink:0}@media (max-width: 768px){.layout-shell{flex-direction:column}.app-sidebar{position:fixed;top:0;left:0;height:100vh;width:260px!important;min-width:260px!important;z-index:50;transform:translate(-100%)}.app-sidebar.open{transform:translate(0)}.sidebar-overlay.open{display:block}.mobile-topbar,.hamburger-btn{display:flex}}@media (max-width: 640px){.auth-left-panel{display:none!important}}.grid-3col{display:grid;grid-template-columns:repeat(3,1fr)}@media (max-width: 960px){.grid-3col{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid-3col{grid-template-columns:1fr}}.detection-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}@media (max-width: 700px){.detection-grid{grid-template-columns:1fr}}.tab-content{padding:32px;margin:0 auto}@media (max-width: 600px){.tab-content{padding:20px 16px}}.upload-zone{transition:border-color .15s,background .15s,transform .28s cubic-bezier(.34,1.56,.64,1),box-shadow .28s ease}.upload-zone:hover:not(.has-file){transform:scale(1.014);box-shadow:0 8px 28px #7c3aed21}.upload-zone.scanning:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(108deg,transparent 22%,rgba(139,92,246,.1) 42%,rgba(196,181,253,.22) 50%,rgba(139,92,246,.1) 58%,transparent 78%);animation:shimmerSweep 2s linear infinite;pointer-events:none;border-radius:10px}@keyframes shimmerSweep{0%{transform:translate(-120%)}to{transform:translate(120%)}}.upload-zone.scanning{animation:borderPulse 1.8s ease-in-out infinite}@keyframes borderPulse{0%,to{box-shadow:0 0 #7c3aed00}50%{box-shadow:0 0 0 4px #7c3aed1a,0 0 22px #7c3aed1f}}.scan-line{position:absolute;left:4px;right:4px;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(139,92,246,.4) 15%,rgba(196,181,253,1) 50%,rgba(139,92,246,.4) 85%,transparent 100%);box-shadow:0 0 10px 2px #8b5cf673;pointer-events:none;border-radius:1px;animation:scanDown 2.4s cubic-bezier(.4,0,.6,1) infinite}@keyframes scanDown{0%{top:6px;opacity:0}6%{opacity:1}94%{opacity:1}to{top:calc(100% - 8px);opacity:0}}.btn-detect{transition:transform .28s cubic-bezier(.34,1.56,.64,1),background .15s,box-shadow .15s,opacity .15s!important}.btn-detect:not(:disabled):active{transform:scale(.93)!important;transition-duration:.07s!important}.scan-msg{display:inline-flex;align-items:center;gap:8px;animation:msgFadeIn .35s ease both}@keyframes msgFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.result-enter{animation:resultReveal .55s cubic-bezier(.34,1.56,.64,1) both}@keyframes resultReveal{0%{opacity:0;transform:scale(.88) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.detail-card-enter{animation:detailCardIn .4s ease both;animation-delay:.22s}@keyframes detailCardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.detail-row{opacity:0;animation:detailRowIn .3s ease forwards}.detail-row:nth-child(1){animation-delay:.38s}.detail-row:nth-child(2){animation-delay:.5s}.detail-row:nth-child(3){animation-delay:.62s}@keyframes detailRowIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion: reduce){.upload-zone,.upload-zone:hover:not(.has-file){transform:none!important;box-shadow:none!important}.upload-zone.scanning:after,.upload-zone.scanning,.scan-line{animation:none;box-shadow:none}.upload-zone.scanning{box-shadow:0 0 0 2px #7c3aed40}.result-enter,.detail-card-enter,.detail-row,.scan-msg{animation:none;opacity:1;transform:none}.btn-detect:not(:disabled):active{transform:none!important}}
