*{box-sizing:border-box;padding:0;margin:0}:root{--bg-primary:#fafafa;--bg-secondary:#f5f5f5;--bg-tertiary:#eee;--bg-elevated:#fff;--card-bg:#f5f5f5;--border-light:#e5e5e5;--border-color:#ddd;--border-strong:#ccc;--border-hover:#bbb;--text-primary:#2c2c2c;--text-secondary:#4a4a4a;--text-muted:#6b6b6b;--text-tertiary:#6b6b6b;--text-inverse:#fafafa;--accent:#2c2c2c;--accent-hover:#1a1a1a;--accent-light:#4a4a4a;--success:#6b8e6b;--error:#c17a7a;--warning:#d4a574;--info:#7a9bb8;--shadow:rgba(0,0,0,.04);--shadow-hover:rgba(0,0,0,.08)}[data-theme=dark]{--bg-primary:#2c2c2c;--bg-secondary:#363636;--bg-tertiary:#404040;--bg-elevated:#4a4a4a;--card-bg:#363636;--border-light:#404040;--border-color:#4a4a4a;--border-strong:#555;--border-hover:#666;--text-primary:#fafafa;--text-secondary:#e5e5e5;--text-muted:#ccc;--text-tertiary:#ccc;--text-inverse:#2c2c2c;--accent:#e5e5e5;--accent-hover:#fafafa;--accent-light:#ccc;--success:#7a9b7a;--error:#d68f8f;--warning:#e0b588;--info:#8fadcc;--shadow:rgba(0,0,0,.3);--shadow-hover:rgba(0,0,0,.4)}html{scroll-behavior:smooth}body,html{max-width:100vw;overflow-x:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .3s ease,color .3s ease}body{background:var(--bg-primary);min-height:100vh;color:var(--text-primary)}h1,h2,h3,h4,h5,h6{font-family:Poppins,sans-serif}a{color:inherit;text-decoration:none}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media print{.keyboard-help,.theme-toggle,button,nav{display:none!important}body{background:#fff!important;color:#000!important}*{box-shadow:none!important}h1,h2,h3{page-break-after:avoid}a[href]:after{content:" (" attr(href) ")"}}@media (max-width:768px){body,html{font-size:14px}h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.25rem}a,button,input,select,textarea{min-height:44px}}@media (hover:none) and (pointer:coarse){button{min-height:48px;padding:.75rem 1rem}:hover{transform:none!important}}