/* ============================================================ DIMITRYCODE.COM — Neo-Brutalist Styles Palette: #F5F0E8 (kraft) / #111 (ink) / #FF6B35 (orange) / #FFDE03 (yellow) ============================================================ */ /* ---- Noise texture overlay ---- */ body::before { content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 9999; opacity: 0.04; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); } /* ---- Brutal card ---- */ .brutal-card { background: #FFFFFF; border: 3px solid #111; box-shadow: 5px 5px 0 #111; transition: all 0.15s ease; } .brutal-card:hover { box-shadow: 8px 8px 0 #111; transform: translate(-2px, -2px); } /* ---- Brutal button ---- */ .brutal-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.875rem 1.75rem; border: 3px solid #111; font-family: 'Courier New', monospace; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.875rem; box-shadow: 5px 5px 0 #111; transition: all 0.15s ease; cursor: pointer; text-decoration: none; } .brutal-btn:hover { box-shadow: 8px 8px 0 #111; transform: translate(-2px, -2px); } .brutal-btn:active { box-shadow: 2px 2px 0 #111; transform: translate(2px, 2px); } .brutal-btn-primary { background: #FF6B35; color: #111; } .brutal-btn-secondary { background: #FFDE03; color: #111; } .brutal-btn-dark { background: #111; color: #FFDE03; } .brutal-btn-white { background: #FFFFFF; color: #111; } /* ---- Brutal badge / sticker ---- */ .brutal-badge { display: inline-block; padding: 0.25rem 0.75rem; border: 2px solid #111; font-family: 'Courier New', monospace; font-weight: 700; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; box-shadow: 3px 3px 0 #111; } /* ---- Brutal chip (tech tags) ---- */ .brutal-chip { display: inline-flex; align-items: center; padding: 0.25rem 0.625rem; border: 2px solid #111; background: #FFDE03; color: #111; font-family: 'Courier New', monospace; font-weight: 700; font-size: 0.75rem; text-transform: uppercase; transition: all 0.15s ease; } .brutal-chip:hover { background: #FF6B35; transform: translate(-1px, -1px); box-shadow: 2px 2px 0 #111; } /* ---- Navbar ---- */ #navbar { background: #FFFFFF !important; border-bottom: 3px solid #111 !important; box-shadow: 0 3px 0 #111 !important; box-sizing: border-box; } #navbar.scrolled { background: #FFFFFF !important; box-shadow: 0 3px 0 #111 !important; } /* ---- Active nav link ---- */ .nav-link.active { color: #111; font-weight: 700; border-bottom: 3px solid #111; padding-bottom: 2px; } /* ---- Reveal animations (with rotation) ---- */ .reveal { opacity: 0; transform: translateY(30px) rotate(-1.5deg); transition: all 0.4s ease; } .reveal.active { opacity: 1; transform: translateY(0) rotate(0deg); } .reveal-delay-1 { transition-delay: 0.1s; } .reveal-delay-2 { transition-delay: 0.2s; } .reveal-delay-3 { transition-delay: 0.3s; } .reveal-delay-4 { transition-delay: 0.4s; } .reveal-delay-5 { transition-delay: 0.5s; } /* ---- Terminal cursor blink ---- */ .terminal-cursor { display: inline-block; width: 10px; height: 20px; background: #FF6B35; margin-left: 2px; animation: cursorBlink 0.8s step-end infinite; vertical-align: text-bottom; } @keyframes cursorBlink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } /* ---- Smooth scroll offset ---- */ :target { scroll-margin-top: 100px; } section[id] { scroll-margin-top: 100px; } /* ---- Prevent horizontal overflow ---- */ html, body { max-width: 100%; overflow-x: hidden; } /* ---- Scrollbar (brutalist) ---- */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: #F5F0E8; border-left: 3px solid #111; } ::-webkit-scrollbar-thumb { background: #FF6B35; border: 2px solid #111; } /* ---- Selection ---- */ ::selection { background: #FFDE03; color: #111; } /* ---- Focus states ---- */ a:focus-visible, button:focus-visible { outline: 3px solid #FF6B35; outline-offset: 2px; } /* ---- Screen reader only ---- */ .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; } /* ---- Responsive typography ---- */ @media (max-width: 640px) { .text-5xl { font-size: 2.5rem; } .text-6xl { font-size: 3rem; } .text-7xl { font-size: 3.5rem; } } /* ---- Print styles ---- */ @media print { #navbar { display: none !important; } body::before { display: none !important; } .reveal { opacity: 1 !important; transform: none !important; } section { background: white !important; color: #111 !important; } }