*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100dvh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--primary: #1a365d;--primary-light: #2d4a7c;--accent: #0d9488;--accent-light: #14b8a6;--warning: #d97706;--danger: #dc2626;--success: #16a34a;--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--font-sans: "Inter", system-ui, -apple-system, sans-serif}[data-theme=light]{--bg-primary: #f8fafc;--bg-secondary: #e2e8f0;--bg-card: #ffffff;--text-primary: #1e293b;--text-secondary: #475569;--text-muted: #94a3b8;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .12)}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);transition:background-color var(--transition-normal),color var(--transition-normal)}#app{min-height:100dvh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}*{scrollbar-width:thin;scrollbar-color:var(--text-muted) var(--bg-secondary)}h1,h2,h3,h4,h5,h6{line-height:1.2;font-weight:700}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-xs{gap:.25rem}.gap-sm{gap:.5rem}.gap-md{gap:1rem}.gap-lg{gap:1.5rem}.gap-xl{gap:2rem}.grid{display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.p-xs{padding:.25rem}.p-sm{padding:.5rem}.p-md{padding:1rem}.p-lg{padding:1.5rem}.p-xl{padding:2rem}.px-sm{padding-left:.5rem;padding-right:.5rem}.px-md{padding-left:1rem;padding-right:1rem}.px-lg{padding-left:1.5rem;padding-right:1.5rem}.py-sm{padding-top:.5rem;padding-bottom:.5rem}.py-md{padding-top:1rem;padding-bottom:1rem}.py-lg{padding-top:1.5rem;padding-bottom:1.5rem}.m-auto{margin:auto}.mx-auto{margin-left:auto;margin-right:auto}.mt-sm{margin-top:.5rem}.mt-md{margin-top:1rem}.mt-lg{margin-top:1.5rem}.mb-sm{margin-bottom:.5rem}.mb-md{margin-bottom:1rem}.mb-lg{margin-bottom:1.5rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-full{border-radius:var(--radius-full)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.login-gate{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:1rem;background:linear-gradient(135deg,var(--bg-primary) 0%,var(--primary) 100%)}.login-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:2.5rem 2rem;width:100%;max-width:400px;text-align:center;box-shadow:var(--shadow-lg)}.login-icon{font-size:3rem;margin-bottom:.5rem}.login-card h1{margin-bottom:.25rem}.login-subtitle{color:var(--text-secondary);margin-bottom:1.5rem}.login-input{width:100%;padding:.75rem 1rem;border:2px solid var(--bg-secondary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);font-size:1rem;outline:none;transition:border-color var(--transition-fast)}.login-input:focus{border-color:var(--accent)}.login-error{color:var(--danger);font-size:.875rem;margin-top:.5rem}.login-button{width:100%;padding:.75rem;margin-top:1rem;background:var(--accent);color:#fff;font-weight:600;font-size:1rem;border-radius:var(--radius-md);transition:background-color var(--transition-fast),transform var(--transition-fast)}.login-button:hover:not(:disabled){background:var(--accent-light)}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{opacity:.6;cursor:not-allowed}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:1rem;padding:2rem}.page-placeholder button{padding:.5rem 1.5rem;background:var(--accent);color:#fff;border-radius:var(--radius-md);font-weight:600;transition:background-color var(--transition-fast)}.page-placeholder button:hover{background:var(--accent-light)}@media(min-width:640px){.sm\:grid-2{grid-template-columns:repeat(2,1fr)}}@media(min-width:768px){.md\:grid-2{grid-template-columns:repeat(2,1fr)}.md\:grid-3{grid-template-columns:repeat(3,1fr)}}@media(min-width:1024px){.lg\:grid-3{grid-template-columns:repeat(3,1fr)}.lg\:grid-4{grid-template-columns:repeat(4,1fr)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideLeft{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideRight{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-12px)}60%{transform:translateY(-6px)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes confetti{0%{opacity:1;transform:translateY(0) rotate(0) scale(1)}50%{opacity:1;transform:translateY(-60px) rotate(180deg) scale(1.2)}to{opacity:0;transform:translateY(40px) rotate(360deg) scale(.6)}}@keyframes roadProgress{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0%}}@keyframes cardFlip{0%{transform:perspective(600px) rotateY(0)}50%{transform:perspective(600px) rotateY(90deg)}to{transform:perspective(600px) rotateY(0)}}@keyframes glow{0%,to{box-shadow:0 0 6px #0d948866}50%{box-shadow:0 0 20px #0d9488cc}}.animate-fade-in{animation:fadeIn .3s ease both}.animate-fade-out{animation:fadeOut .3s ease both}.animate-slide-up{animation:slideUp .4s ease both}.animate-slide-down{animation:slideDown .4s ease both}.animate-slide-left{animation:slideLeft .4s ease both}.animate-slide-right{animation:slideRight .4s ease both}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-bounce{animation:bounce .6s ease}.animate-shake{animation:shake .5s ease}.animate-confetti{animation:confetti 1s ease forwards}.animate-card-flip{animation:cardFlip .6s ease}.animate-glow{animation:glow 2s ease-in-out infinite}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}
