diff --git a/README.md b/README.md index 3d8e6e8..45bbc7c 100644 --- a/README.md +++ b/README.md @@ -1,180 +1,37 @@ -# d@n tech - Modern Web Portfolio (2026 Edition) +# Web Development Site -A modern, coffee-themed web development portfolio showcasing professional web development services. Built with vanilla JavaScript, CSS, and HTML using Vite for development, Bootstrap 5 foundation, and a responsive design system with light/dark mode support. +Welcome to the Web Development Site repository. This project is a simple website designed to showcase basic web development skills. -## 🌟 Features +## Features -- **Modern Coffee Theme**: Elegant color palette with CSS custom properties (--color-coffee, --color-cream, --color-gold, --color-teal) -- **Responsive Design**: Mobile-first approach with Bootstrap 5 grid system and container queries -- **Dark/Light Mode**: Automatic theme switching based on system preferences with manual toggle -- **Interactive Elements**: - - Particle background canvas animation - - Typewriter effect for hero section - - Service cards with icons and descriptions - - Testimonial carousel with expandable content - - Scroll progress indicator -- **Performance Optimized**: - - Vite-based build with code splitting and minification - - WebP image formats with responsive variants - - Bootstrap loaded from CDN with fallback -- **Cross-Browser Compatible**: Fully tested on Firefox, WebKit (Safari), and Chromium -- **Accessibility**: Semantic HTML5, ARIA attributes, proper heading hierarchy -- **Multi-Page Support**: Includes Terms of Service and Privacy Policy pages +- Responsive design +- Basic HTML, CSS, and JavaScript +- Simple and clean layout -## πŸ› οΈ Tech Stack +## Installation -- **Frontend**: Vanilla JavaScript (ES6+), CSS3, HTML5 -- **Build Tool**: Vite 7.3.1 -- **CSS Framework**: Bootstrap 5.3.3 -- **Fonts**: Inter (body), Playfair Display (headings) -- **Development**: npm scripts, Playwright for cross-browser testing -- **CI/CD**: GitHub Actions with Lighthouse audits +1. Clone the repository: + ```bash + git clone https://github.com/yourusername/web_dev_site.git + ``` +2. Navigate to the project directory: + ```bash + cd web_dev_site + ``` +3. Open `index.html` in your web browser to view the website. -## πŸ“ Project Structure +## Usage -``` -webdev/ -β”œβ”€β”€ index.html # Main portfolio page -β”œβ”€β”€ tos.html # Terms of Service -β”œβ”€β”€ privacy.html # Privacy Policy -β”œβ”€β”€ main.js # All JavaScript functionality -β”œβ”€β”€ styles.css # Complete CSS with coffee theme -β”œβ”€β”€ vite.config.js # Vite multi-page configuration -β”œβ”€β”€ package.json # Dependencies and scripts -β”œβ”€β”€ assets/ # Static assets (images, fonts) -β”œβ”€β”€ public/ # Public files served as-is -β”œβ”€β”€ dist/ # Production build (generated) -β”œβ”€β”€ cross_browser_test.py # Playwright cross-browser tests -β”œβ”€β”€ .github/workflows/ci.yml # CI/CD pipeline -└── AGENTS.md # Developer guide for AI agents -``` +Feel free to explore the code, modify it, and use it as a reference for your own projects. -## πŸš€ Getting Started +## Contributing -### Prerequisites +Contributions are welcome! Please fork the repository and create a pull request with your changes. -- Node.js 18+ and npm -- Modern web browser +## License -### Installation +This project is licensed under the MIT License. -1. **Clone the repository** - ```bash - git clone https://git.dustin.coffee/hobokenchicken/webdev-site.git - cd webdev-site - ``` +## Contact -2. **Install dependencies** - ```bash - npm install - ``` - -3. **Start development server** - ```bash - npm run dev - ``` - Open [http://localhost:5173](http://localhost:5173) in your browser. - -## πŸ“¦ Development Commands - -| Command | Description | -|---------|-------------| -| `npm run dev` | Start Vite development server (localhost:5173) | -| `npm run build` | Build for production (outputs to `/dist`) | -| `npm run preview` | Preview production build (localhost:4173) | -| `npm test` | *Placeholder for future test suite* | - -## πŸ§ͺ Testing - -### Cross-Browser Testing -Run comprehensive browser compatibility tests using Playwright: - -```bash -# Install Playwright (Python) -pip install playwright -playwright install firefox webkit - -# Build and preview the site -npm run build && npm run preview & - -# Run cross-browser tests -python cross_browser_test.py -pkill -f "vite preview" -``` - -### Lighthouse Audit -Generate performance, accessibility, and SEO reports: - -```bash -npm run build && npm run preview & -npx lighthouse http://localhost:4173 --output json --output html --output-path=./lighthouse-report -``` - -### CI/CD Pipeline -The project includes GitHub Actions workflow (`.github/workflows/ci.yml`) that runs on every push/PR: - -1. `npm ci` - Clean install -2. `npm run build` - Production build verification -3. Lighthouse analysis via `lighthouse-checker/action` - -## 🎨 Design System - -The portfolio follows a consistent design language: - -- **Color Palette**: Coffee-themed semantic variables (`--color-coffee-*`, `--color-cream`, `--color-gold`, `--color-teal`) -- **Typography**: `--font-sans` (Inter) for body, `--font-display` (Playfair Display) for headings -- **Spacing**: Consistent padding/margin scales using CSS custom properties -- **Shadows**: `--shadow-soft` and `--shadow-glass` variables -- **Transitions**: Cubic-bezier easing for natural motion -- **Reduced Motion**: Respects `prefers-reduced-motion` media query - -## πŸ“ Code Style - -### JavaScript -- ES6+ modules with `type="module"` in HTML -- `const` over `let`; avoid `var` -- Arrow functions for callbacks; named functions for top-level declarations -- CamelCase for variables/functions; PascalCase for classes -- Early returns and element existence checks before DOM manipulation -- Section headers: `// ===== SECTION NAME =====` - -### CSS -- CSS Custom Properties defined in `:root` with semantic names -- CSS Nesting with `&` for nested selectors (modern browsers) -- Mobile-first media queries with `min-width` -- Support for `prefers-color-scheme: dark` with variable overrides -- Kebab-case for class names -- Modern features: container queries, view transitions, CSS grid, flexbox - -### HTML -- Semantic HTML5 elements (`
`, `
`, `
`) -- ARIA attributes where needed; proper heading hierarchy -- Bootstrap classes alongside custom styles -- `data-*` attributes for JavaScript hooks (e.g., `data-text`, `data-score`) -- Lazy loading for images; defer non-critical scripts - -## 🀝 Contributing - -Contributions are welcome! Please follow these steps: - -1. Fork the repository -2. Create a feature branch (`git checkout -b feature/amazing-feature`) -3. Commit your changes (`git commit -m 'Add amazing feature'`) -4. Push to the branch (`git push origin feature/amazing-feature`) -5. Open a Pull Request - -Please ensure your code follows the existing style conventions and includes appropriate tests. - -## πŸ“„ License - -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. - -## πŸ“¬ Contact - -- **Portfolio**: [dev.dustin.coffee](https://dev.dustin.coffee/) -- **Email**: [Contact via portfolio](https://dev.dustin.coffee/#contact) -- **GitHub**: [@hobokenchicken](https://github.com/hobokenchicken) - ---- - -*Built with β˜• by Dustin Newkirk | Last updated: February 2026* +For any questions or feedback, please contact [your email address]. diff --git a/index.html b/index.html index 2440342..310877b 100644 --- a/index.html +++ b/index.html @@ -1,548 +1,137 @@ - - - - - - - - - - - - d@n tech - Web Development Services - - - - - - - - - - - - - - - - - - - - -
+ + + + + + + + + + d@n tech - Web Development Services + + + + + + + + +
+

d@n tech

+

Your partner in web development

+

Visit my main site

+
+
+
+

About Us

+

Welcome to d@n tech! We specialize in creating stunning and efficient websites for businesses of all sizes. Our team of experienced developers is dedicated to delivering high-quality web solutions that meet your unique needs.

+ +

Services

+
    +
  • Custom Website Development
  • +
  • Responsive Design
  • +
  • E-commerce Solutions
  • +
  • SEO Optimization
  • +
  • Website Maintenance
  • +
+ +
+ +
+

Portfolio

+
+
+
+ Project 1 +
+
Pemu Counseling and Wellness
+

Pemu Counseling and Wellness is a comprehensive mental health service provider offering personalized counseling and wellness programs to help individuals achieve their mental health goals.

+ Learn More +
+
+
+
+
+ Project 2 +
+
Kayla Newkirk
+

Kayla Newkirk is a PhD candidate specializing in mental health counseling and supervision, dedicated to advancing the field through research and practice.

+ Learn More +
+
+
+
+
+ Project 3 +
+
4th & Goal
+

4th & Goal is a hardcore band based out of Syracuse, NY, known for their intense performances and powerful music that resonates with fans across the state.

+ Learn More +
+
+
+
+
+ Project 4 +
+
Powerful Healing Arts
+

Powerful Healing Arts is a sanctuary for women seeking to move beyond physical healing into deeper, energetic and spiritual transformation. Discover how shamanic wisdom and energy work can unlock new pathways to healing and personal growth.

+ Learn More +
+
+
+
+
+ +
+

Testimonials

+
+
+
+
+

"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision. In addition to bringing my ideas to life with a clean, professional design, he made the entire process enjoyable and easy. His attention to detail, creativity, and technical skills are excellent. As a result of Dustin's work, I now have a website that truly represents my practice. There is no better person to recommend than him!"

+

- Margaret Pemu, Pemu Counseling and Wellness

+
+
+
+
+
+
+

"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill and worked from simple examples provided, which translated into a functional and funky-professional website that represents my brand. - - - -

- -
- -
-

Digital Experiences,
Perfectly Brewed.

-

- - -
- - - -
-
- - -
-
-

About Me

-
-
-

Welcome to d@n tech! I specialize in creating stunning and efficient websites for businesses of all sizes.

-

As an experienced developer, I'm dedicated to delivering high-quality web solutions that meet your unique needs. I believe in code that is as clean as a fresh pour-over and designs that are as rich as a dark roast.

-
-
-
-
- - -
-
-

Services

-
-
-
-
-
- - - -
-
Custom Website Development
-

Tailored websites built from scratch to match your brand, goals, and user needs.

-
-
-
-
-
-
-
- - - -
-
Responsive Design
-

Sites that look and function beautifully on every device, from phones to desktops.

-
-
-
-
-
-
-
- - - -
-
E-commerce Solutions
-

Online stores designed to convert visitors into customers with secure checkout.

-
-
-
-
-
-
-
- - - -
-
SEO Optimization
-

Improved visibility on search engines to help clients find you organically.

-
-
-
-
-
-
-
- - - -
-
Website Maintenance
-

Ongoing updates, security patches, and support to keep your site running smoothly.

-
-
-
-
-
-
- - -
-
-

Technologies & Tools

-
- -
-
-

HTML5

-

Semantic Markup

+ His patience and technical skills are truly impressive. Furthermore, he was responsive throughout the entire process, always open to feedback, and quick to implement changes. What I appreciated most was how he spent time working toward what I wanted and was supportive in my goals."

+

-Laura, Woman-Owned Small Business

+
- -
-
-

CSS3

-

Modern Styling

-
-
- -
-
-

JavaScript

-

Interactive Logic

-
-
- -
-
-

Bootstrap 5

-

Responsive UI

-
-
- -
-
-

Vite

-

Fast Build Tool

-
-
- -
-
-

Git

-

Version Control

-
-
- -
-
-

SEO

-

Search Visibility

-
-
- -
-
-

Accessibility

-

Inclusive Design

-
-
-
-
-
- - -
-
-

The Brewing Process

-
- -
-
- 01 -
- -
-

Discovery (The Roast)

-

I start by selecting the finest beansβ€”gathering your requirements, understanding your goals, and defining the scope of the project.

-
-
- -
-
- 02 -
- -
-

Design (The Grind)

-

I prepare the perfect grind consistency. This involves creating wireframes, designing the UI/UX, and prototyping the visual experience.

-
-
- -
-
- 03 -
- -
-

Development (The Brew)

-

The magic happens here. I write clean, efficient code to bring the designs to life, ensuring everything functions perfectly.

-
-
- -
-
- 04 -
- -
-

Testing (The Taste Test)

-

Quality assurance is key. I rigorously test for bugs, performance issues, and responsiveness across all devices and browsers.

-
-
- -
-
- 05 -
- -
-

Launch (The Pour)

-

It's serving time. We handle the deployment, DNS settings, and final checks to ensure a smooth go-live experience.

-
-
- -
-
- 06 -
- -
-

Support (The Refill)

-

I don't just leave you with the cup. I offer ongoing maintenance, updates, and support to keep your site fresh.

-
-
-
-
-
- - -
-
-

Portfolio

-
- -
-
- Kayla Newkirk -
-
Kayla Newkirk
-

Kayla Newkirk is a PhD candidate specializing in mental health counseling and supervision, dedicated to advancing the field through research and practice.

-
- - Responsive - - - Academic - - - SEO - -
- -
-
-
-
-
- P.W.L. Myers -
-
P.W.L. Myers
-

P.W.L. Myers provides leadership counseling and professional development services, empowering individuals to achieve their full potential through personalized guidance and strategic career support.

-
- - Responsive - - - SEO - - - A11y - -
- -
-
-
-
-
- Powerful Healing Arts -
-
Powerful Healing Arts
-

Powerful Healing Arts is a sanctuary for women seeking to move beyond physical healing into deeper, energetic and spiritual transformation.

-
- - Content - - - SEO - - - Responsive - -
- -
-
-
-
-
- DissertationPath -
-
DissertationPath
-

DissertationPath is a comprehensive platform designed to help doctoral candidates navigate the dissertation process with expert guidance.

-
- - Platform - - - EdTech - - - Responsive - -
- -
-
-
-
-
-
- - -
-
-

Testimonials

-
-
- -
-
-
β€œ
- -
-
MP
-
-
Margaret Pemu
- Pemu Counseling and Wellness -
-
- -
- - - - - -
- -
-

"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision..."

-

"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision. In addition to bringing my ideas to life with a clean, professional design, he made the entire process enjoyable and easy. His attention to detail, creativity, and technical skills are excellent. As a result of Dustin's work, I now have a website that truly represents my practice. There is no better person to recommend than him!"

-
- -
-
-
-
-
-
-
β€œ
- -
-
L
-
-
Laura
- Woman-Owned Small Business -
-
- -
- - - - - -
- -
-

"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill..."

-

"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill and worked from simple examples provided, which translated into a functional and funky-professional website that represents my brand. - His patience and technical skills are truly impressive. Furthermore, he was responsive throughout the entire process, always open to feedback, and quick to implement changes. What I appreciated most was how he spent time working toward what I wanted and was supportive in my goals."

-
- -
-
-
- - -
-
-
- - -
- -
-

Contact Me

-
-
-
-
-

Ready to start your next project? Let's connect over coffee (or email).

- - - - - Send an Email - -

View your invoices at invoice.dustin.coffee

-
-
-
-
-
-
- - - - - - - + + + + +
+

Contact Us

+
+
+

For inquiries, please email us at info@dustin.coffee

+

View your invoices at invoice.dustin.coffee

+
+
+
+ + + + + + + + diff --git a/privacy.html b/privacy.html index 0828d08..b2fae66 100644 --- a/privacy.html +++ b/privacy.html @@ -3,41 +3,13 @@ - - - - - - - Privacy Policy - d@n tech - - - - - - - - - - - - - + Privacy Policy + - -
-

d@n tech

-

Privacy Policy

-
-
- +

Privacy Policy

Your privacy is important to us. It is our policy to respect your privacy regarding any information we may collect from you across our website, D@N Tech, and other sites we own and operate.

@@ -53,18 +25,11 @@

We do not share your personal information with anyone except to comply with the law, develop our products, or protect our rights.

-

4. SMS / Mobile Information

-

- No mobile information will be shared with third parties or affiliates for any marketing or promotional purposes. -

-

- We do not sell, rent, or share SMS opt-in data or consent with third parties. Your mobile information is used solely to deliver the services you requested and to communicate with you directly. -

-

5. Security

+

4. Security

We take the security of your personal information seriously and take reasonable measures to protect it.

-

6. Changes to this policy

+

5. Changes to this policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.

@@ -72,17 +37,8 @@ If you have any questions about this Privacy Policy, please contact us.

- - - - + + + \ No newline at end of file diff --git a/styles.css b/styles.css index 14f51f1..c4f6bb8 100644 --- a/styles.css +++ b/styles.css @@ -1,1407 +1,41 @@ :root { - /* Palette - Coffee Theme Enhanced */ - --color-coffee-dark: #2c211d; /* Espresso */ - --color-coffee-medium: #6F4E37; /* Medium Roast */ - --color-cream: #F5E8C7; /* Latte Foam */ - --color-gold: #D4A574; /* Caramel */ - --color-teal: #1D7874; /* Oxidized Copper */ - --color-orange: #E76F51; /* Terracotta */ - - /* Gradients */ - --gradient-hero: linear-gradient(135deg, var(--color-coffee-dark) 0%, var(--color-coffee-medium) 100%); - --gradient-gold: linear-gradient(45deg, var(--color-gold), #e8c39e); - --gradient-teal: linear-gradient(45deg, var(--color-teal), #2a9d8f); - - /* Semantic Colors - Light Mode Default */ - --bg-body: #FDFBF7; - --text-body: var(--color-coffee-dark); - --bg-surface-rgb: 255, 255, 255; - --bg-surface: rgba(var(--bg-surface-rgb), 0.7); - --color-primary: var(--color-gold); - --color-secondary: var(--color-gold); - - --border-subtle: rgba(111, 78, 55, 0.15); - --shadow-soft: 0 10px 30px -5px rgba(44, 33, 29, 0.08); - --shadow-glass: 0 8px 32px 0 rgba(44, 33, 29, 0.1); - - /* Section Backgrounds */ - --bg-section-alt: rgba(111, 78, 55, 0.03); - - /* Typography */ - --font-sans: 'Inter', system-ui, -apple-system, sans-serif; - --font-display: 'Playfair Display', Georgia, serif; - - /* BS Overrides */ - --bs-body-bg: var(--bg-body); - --bs-body-color: var(--text-body); - --bs-primary: var(--color-primary); - --bs-primary-rgb: 42, 157, 143; + --bs-primary: #3D3300; + --bs-secondary: #F8FDDD; + --bs-success: #4CAF50; + --bs-info: #17A2B8; + --bs-warning: #FFC107; + --bs-danger: #DC3545; + --bs-light: #F8F9FA; + --bs-dark: #343A40; } -@media (prefers-color-scheme: dark) { - :root { - /* Semantic Colors - Dark Mode */ - --bg-body: #1a1412; - --text-body: #F5E8C7; - --bg-surface-rgb: 30, 24, 22; - --bg-surface: rgba(var(--bg-surface-rgb), 0.6); - --border-subtle: rgba(245, 232, 199, 0.1); - --shadow-soft: 0 10px 40px -10px rgba(0, 0, 0, 0.5); - --shadow-glass: 0 8px 32px 0 rgba(0, 0, 0, 0.4); - --bg-section-alt: rgba(255, 255, 255, 0.02); - - /* BS Overrides */ - --bs-body-bg: var(--bg-body); - --bs-body-color: var(--text-body); - --bs-dark: #1f1a17; - } -} - -/* Global Reset & Base */ body { - font-family: var(--font-sans); - background-color: var(--bg-body); - /* Subtle Grain Texture */ - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E"); - color: var(--text-body); - line-height: 1.6; - -webkit-font-smoothing: antialiased; - transition: background-color 0.3s ease, color 0.3s ease; - overflow-x: hidden; /* Prevent horizontal scroll from floating elements */ + font-family: 'IBM Plex Mono', monospace; + margin: 0; + padding: 0; + background-color: var(--bs-secondary); /* Updated background color */ + color: var(--bs-primary); /* Updated text color */ } - -/* ===== DECORATIVE LAYERS ===== */ -.decorative-layer { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 0; - overflow: hidden; -} - -.floating-bean { - position: absolute; - opacity: 0.03; - color: var(--color-coffee-dark); - animation: float-bean 20s infinite linear; -} - -@media (prefers-color-scheme: dark) { - .floating-bean { - color: var(--color-cream); - opacity: 0.05; - } -} - -.bean-1 { width: 100px; top: 10%; left: 5%; animation-duration: 25s; } -.bean-2 { width: 150px; top: 60%; right: -5%; animation-duration: 35s; animation-direction: reverse; } -.bean-3 { width: 80px; top: 80%; left: 15%; animation-duration: 30s; animation-delay: -5s; } - -@keyframes float-bean { - 0% { transform: translate(0, 0) rotate(0deg); } - 33% { transform: translate(30px, -50px) rotate(120deg); } - 66% { transform: translate(-20px, 50px) rotate(240deg); } - 100% { transform: translate(0, 0) rotate(360deg); } -} - -/* ===== DECORATIVE ELEMENTS ===== */ -.drip-separator { - position: absolute; - width: 100%; - left: 0; - line-height: 0; - z-index: 2; - overflow: hidden; - pointer-events: none; -} - -.drip-separator svg { - display: block; - width: calc(100% + 1.3px); - height: 60px; -} - -.drip-separator.bottom { - bottom: -1px; - transform: rotate(180deg); - color: var(--bg-body); /* Match the section below it */ -} - -/* Specific background match for where the drip lands */ -/* If the next section is section-alt, we need to match that */ -/* BUT here hero is followed by white/cream section, so bg-body is correct */ - -/* Floating Cup Animation */ -.floating-cup { - position: absolute; - opacity: 0.04; - color: var(--color-coffee-dark); - animation: float-rotate 18s infinite ease-in-out; - transition: transform 0.1s linear; -} - -@media (prefers-color-scheme: dark) { - .floating-cup { - color: var(--color-cream); - opacity: 0.06; - } -} - -.cup-1 { width: 120px; top: 25%; right: 10%; animation-delay: -2s; } - -@keyframes float-rotate { - 0% { transform: rotate(-5deg); } - 50% { transform: rotate(5deg); } - 100% { transform: rotate(-5deg); } -} - - -@keyframes float-rotate { - 0% { transform: rotate(-5deg); } - 50% { transform: rotate(5deg); } - 100% { transform: rotate(-5deg); } -} - -/* Coffee Stains */ -.coffee-stain { - position: absolute; - background-repeat: no-repeat; - background-size: contain; - opacity: 0.06; - pointer-events: none; - z-index: 0; - /* Inline SVG for stain - ring shape */ - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%236F4E37' d='M100,20 C145,20 180,55 180,100 C180,145 145,180 100,180 C55,180 20,145 20,100 C20,55 55,20 100,20 Z M100,35 C65,35 35,65 35,100 C35,135 65,165 100,165 C135,165 165,135 165,100 C165,65 135,35 100,35 Z'/%3E%3C/svg%3E"); -} - -.stain-2 { - width: 300px; - height: 300px; - top: -50px; - right: -50px; - transform: rotate(45deg); -} - -/* Coffee Grounds Pattern */ -.coffee-grounds-pattern { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0.1; - pointer-events: none; - background-image: radial-gradient(var(--color-coffee-medium) 1px, transparent 1px); - background-size: 20px 20px; -} - -/* Button Icon Styling */ -.btn-icon { - margin-right: 0.5rem; - vertical-align: text-bottom; - transition: transform 0.3s ease; -} - -.btn-primary:hover .btn-icon { - transform: rotate(-10deg) scale(1.1); -} - -/* Ripple/Steam Effect on Buttons (Pseudo-element) */ -.btn-primary::after { - content: ''; - position: absolute; - top: -50%; - left: -50%; - width: 200%; - height: 200%; - background: radial-gradient(circle, rgba(255,255,255,0.2) 0%, transparent 60%); - transform: scale(0); - transition: transform 0.6s ease-out; - opacity: 0; -} - -/* Corner Accents */ -.card::before { - content: ''; - position: absolute; - top: 0; - right: 0; - width: 60px; - height: 60px; - background: radial-gradient(circle at top right, rgba(212, 165, 116, 0.2), transparent 70%); - border-radius: 0 16px 0 100%; - pointer-events: none; - opacity: 0; - transition: opacity 0.4s ease; -} - -.card:hover::before { - opacity: 1; -} - -/* Scroll Progress Enhancement */ -.scroll-progress { - height: 6px; /* Slightly thicker */ - background: linear-gradient( - to right, - var(--color-coffee-dark) 0%, - var(--color-gold) var(--scroll-progress, 0%), - transparent var(--scroll-progress, 0%) - ); - box-shadow: 0 2px 10px rgba(212, 165, 116, 0.3); -} - -.btn-primary:active::after { - transform: scale(1); - opacity: 1; - transition: 0s; -} - - -a { - color: var(--color-primary); - text-decoration: none; - font-weight: 600; - position: relative; - transition: color 0.3s ease; - - /* Coffee Drip Underline Animation */ - background-image: linear-gradient(to right, var(--color-coffee-medium) 0%, var(--color-gold) 100%); - background-size: 0% 2px; - background-position: left bottom; - background-repeat: no-repeat; - padding-bottom: 2px; - - &:hover { - background-size: 100% 2px; - color: var(--color-coffee-dark); - } -} - -@media (prefers-color-scheme: dark) { - a:hover { - color: var(--color-gold); - } -} - -/* Typography Enhancements */ -h1, h2, h3, h4, h5, h6 { - font-weight: 700; - letter-spacing: -0.02em; - color: currentColor; - margin-bottom: 1rem; - font-family: var(--font-display); -} - -h1 { - font-size: clamp(3.5rem, 8vw, 5.5rem); - line-height: 1.05; - text-shadow: 2px 2px 0 rgba(0,0,0,0.05); - font-weight: 900; -} - -h2 { - font-size: clamp(2.5rem, 5vw, 4rem); - margin-bottom: 4rem; - padding-bottom: 1.5rem; - position: relative; - display: inline-block; - border-bottom: none; - background: var(--gradient-hero); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - font-weight: 700; - font-style: italic; -} - -h2::after { - content: ''; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - width: 60px; - height: 6px; - background: var(--color-gold); - border-radius: 4px; - transition: width 0.4s ease; -} - -section:hover h2::after { - width: 120px; -} - -/* Sections */ -section { - position: relative; - width: 100%; -} - -.section-alt { - background-color: var(--bg-section-alt); - /* Remove borders for seamless look, rely on background change */ - border-top: none; - border-bottom: none; -} - -.section-padding { - padding-block: clamp(6rem, 10vw, 8rem); /* More breathing room */ -} - -/* Header/Hero Section */ -.hero-section { - min-height: 100vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; +header { + background-color: var(--bs-primary); /* Updated background color */ + color: var(--bs-secondary); /* Updated text color */ + padding: 1rem 0; text-align: center; - position: relative; - padding: 2rem 1rem; - z-index: 1; - overflow: hidden; } - -.hero-content { - max-width: 1000px; +.container { + padding: 2rem; + max-width: 800px; margin: 0 auto; - position: relative; - z-index: 2; } - -.hero-title { - font-size: clamp(3.5rem, 10vw, 7rem); - line-height: 1; - margin-bottom: 2rem; - background: var(--gradient-hero); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - font-weight: 900; - letter-spacing: -0.05em; - filter: drop-shadow(0 4px 10px rgba(0,0,0,0.1)); +h1, h2 { + color: var(--bs-primary); /* Updated heading color */ } - -.hero-subtitle { - font-size: clamp(1.25rem, 3vw, 2rem); - margin-bottom: 3rem; - color: var(--color-coffee-dark); - font-weight: 500; - min-height: 1.5em; - opacity: 0.9; - letter-spacing: -0.01em; -} - -@media (prefers-color-scheme: dark) { - .hero-title { - background: linear-gradient(135deg, #fff 0%, var(--color-gold) 100%); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - } - - .hero-subtitle { - color: var(--color-cream); - } - - h2 { - background: linear-gradient(135deg, #fff 0%, var(--color-gold) 100%); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - } -} - -/* Cards (Services & Portfolio) */ -.card { - background-color: var(--bg-surface); - backdrop-filter: blur(12px); - -webkit-backdrop-filter: blur(12px); - border: 1px solid var(--border-subtle); - border-radius: 16px; - overflow: hidden; - transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); - height: 100%; - position: relative; - - /* Scroll Animation Entry */ - view-timeline-name: --card-entry; - view-timeline-axis: block; - animation: fade-in-up linear both; - animation-timeline: view(); - animation-range: entry 10% cover 20%; - - &:hover { - transform: translateY(-8px) scale(1.02); - box-shadow: var(--shadow-glass); - border-color: var(--color-gold); - background-color: color-mix(in srgb, var(--bg-surface), var(--color-cream) 10%); - } - - /* Shine Effect */ - &::after { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient( - 90deg, - transparent, - rgba(255, 255, 255, 0.2), - transparent - ); - transition: 0.5s; - pointer-events: none; - } - - &:hover::after { - left: 100%; - transition: 0.7s ease-in-out; - } - - .card-img-top { - aspect-ratio: 16/9; - object-fit: cover; - transition: transform 0.6s ease; - filter: sepia(20%) contrast(1.1); - } - - &:hover .card-img-top { - transform: scale(1.08); - filter: sepia(0%) contrast(1.2); - } - - .card-body { - padding: 2rem; - display: flex; - flex-direction: column; - - h5.card-title { - font-size: 1.5rem; - margin-bottom: 0.75rem; - font-family: var(--font-display); - letter-spacing: -0.02em; - } - - p.card-text { - font-size: 1rem; - opacity: 0.9; - flex-grow: 1; - line-height: 1.7; - } - } -} - -/* Drop Cap */ -.drop-cap::first-letter { - font-family: var(--font-display); - font-size: 4rem; - line-height: 0.8; - float: left; - margin-right: 0.15em; - margin-top: 0.05em; - color: var(--color-coffee-medium); - font-weight: 900; -} - -@media (prefers-color-scheme: dark) { - .drop-cap::first-letter { - color: var(--color-gold); - } -} - -/* Custom List Markers (Coffee Beans) */ -.list-group-item { - padding-left: 2rem; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23D4A574'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z'/%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position: 0.5rem center; - background-size: 1rem; -} - -.list-group-item:hover { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%231D7874'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z'/%3E%3C/svg%3E"); -} - -/* Testimonial Typography */ -.testimonial-quote-icon { - font-family: var(--font-display); - font-style: italic; -} - -.testimonial-full, .testimonial-excerpt { - font-family: var(--font-display); - font-style: italic; - font-size: 1.15rem; - line-height: 1.8; -} - -.testimonial-author { - font-family: var(--font-sans); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.05em; - font-size: 0.8rem; - color: var(--color-coffee-dark); -} -.list-group { - --bs-list-group-bg: transparent; - --bs-list-group-border-color: var(--border-subtle); - - .list-group-item { - background-color: var(--bg-surface); - backdrop-filter: blur(8px); - border-color: var(--border-subtle); - font-weight: 500; - transition: all 0.3s ease; - border-radius: 8px; - margin-bottom: 0.5rem; - - &:hover { - background-color: color-mix(in srgb, var(--color-primary), transparent 90%); - border-left: 6px solid var(--color-secondary); - transform: translateX(5px); - box-shadow: 0 4px 15px rgba(0,0,0,0.05); - } - } -} - -/* Footer */ footer { - background-color: var(--color-coffee-dark) !important; - color: var(--color-cream) !important; - padding: 3rem 0; - margin-top: 5rem; - border-top: 4px solid var(--color-secondary); - - a { - color: var(--color-cream); - opacity: 0.7; - - &:hover { - opacity: 1; - color: var(--color-secondary); - } - } -} - -/* Tech Stack Cards */ -.tech-card { - padding: 2.5rem 1.5rem; - border-radius: 20px; - background-color: var(--bg-surface); - backdrop-filter: blur(8px); - -webkit-backdrop-filter: blur(8px); - border: 1px solid var(--border-subtle); + background-color: var(--bs-primary); /* Updated background color */ + color: var(--bs-secondary); /* Updated text color */ text-align: center; - height: 100%; - transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); /* Elastic Bounce */ - position: relative; - overflow: hidden; - z-index: 1; -} - -.tech-card::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 4px; - background: var(--gradient-teal); - transform: scaleX(0); - transition: transform 0.4s ease; -} - -.tech-card:hover { - transform: translateY(-8px); - box-shadow: 0 15px 40px -10px rgba(29, 120, 116, 0.15); - border-color: var(--color-teal); -} - -.tech-card:hover::before { - transform: scaleX(1); -} - -/* Portfolio Badges */ -.badge-coffee { - display: inline-flex; - align-items: center; - gap: 0.5rem; - padding: 0.5em 1em; - font-size: 0.75rem; - font-weight: 800; - text-transform: uppercase; - letter-spacing: 0.08em; - color: var(--color-coffee-dark); - background-color: rgba(255, 255, 255, 0.5); - border: 1px solid var(--border-subtle); - border-radius: 50px; - transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); - cursor: default; - backdrop-filter: blur(4px); -} - -.badge-coffee svg { - width: 14px; - height: 14px; - stroke-width: 2.5; -} - -.badge-coffee:hover { - background: var(--gradient-gold); - color: var(--color-coffee-dark); - border-color: transparent; - transform: translateY(-2px) scale(1.05); - box-shadow: 0 4px 12px rgba(212, 165, 116, 0.3); -} - -@media (prefers-color-scheme: dark) { - .badge-coffee { - color: var(--color-cream); - background-color: rgba(255, 255, 255, 0.05); - border-color: rgba(255, 255, 255, 0.1); - } - - .badge-coffee:hover { - background: var(--gradient-gold); - color: var(--color-coffee-dark); - border-color: transparent; - } -} - -.tech-icon-wrapper { - width: 80px; /* Larger */ - height: 80px; - border-radius: 50%; - background: linear-gradient(135deg, rgba(29, 120, 116, 0.1), rgba(29, 120, 116, 0.05)); - color: var(--color-teal); - display: inline-flex; - align-items: center; - justify-content: center; - margin-bottom: 1.5rem; - transition: all 0.5s ease; - border: 1px solid transparent; -} - -.tech-card:hover .tech-icon-wrapper { - background: var(--gradient-teal); - color: white; - transform: scale(1.1) rotate(10deg); - box-shadow: 0 10px 20px rgba(29, 120, 116, 0.3); -} - -.tech-name { - font-weight: 800; - font-size: 1.2rem; - margin-bottom: 0.5rem; - color: var(--text-body); - font-family: var(--font-display); -} - -.tech-desc { - font-size: 0.95rem; - opacity: 0.8; - margin: 0; - line-height: 1.5; -} - -/* Process Section */ -.process-card { - background-color: var(--bg-surface); - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); - border: 1px solid var(--border-subtle); - border-radius: 16px; - padding: 2.5rem; - height: 100%; - position: relative; - transition: all 0.4s ease; - z-index: 1; - overflow: hidden; -} - -.section-alt .process-card { - background-color: var(--bg-surface); -} - -.process-card:hover { - transform: translateY(-5px); - box-shadow: var(--shadow-soft); - border-color: var(--color-secondary); -} - -.process-number { - position: absolute; - top: -15px; - right: -10px; - font-size: 5rem; - font-weight: 900; - color: var(--color-coffee-medium); - opacity: 0.08; - line-height: 1; - z-index: 0; - font-family: var(--font-sans); -} - -.process-icon-wrapper { - width: 56px; - height: 56px; - border-radius: 50%; - background-color: color-mix(in srgb, var(--color-primary), transparent 90%); - color: var(--color-primary); - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 1.5rem; - position: relative; - z-index: 1; -} - -.process-title { - font-size: 1.25rem; - font-weight: 700; - margin-bottom: 0.75rem; - color: var(--text-body); - position: relative; - z-index: 1; -} - -.process-desc { - font-size: 0.95rem; - color: var(--text-body); - opacity: 0.85; - margin-bottom: 0; - position: relative; - z-index: 1; -} - -/* Animations */ -@keyframes fade-in-up { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -/* Container Queries for Responsive Typography inside cards if needed */ -.card-body { - container-type: inline-size; -} - -@container (max-width: 300px) { - .card-title { - font-size: 1.1rem; - } -} - -/* Utility Overrides for Bootstrap Buttons to match theme */ -.btn-primary { - background: var(--gradient-teal); - border: none; - color: white; - font-weight: 800; - text-transform: uppercase; - font-size: 0.9rem; - letter-spacing: 0.08em; - padding: 0.8em 2em; - border-radius: 50px; - position: relative; - overflow: hidden; - transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); - box-shadow: 0 4px 15px rgba(29, 120, 116, 0.3); - z-index: 1; -} - -.btn-primary::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient(45deg, var(--color-coffee-dark), var(--color-teal)); - opacity: 0; - z-index: -1; - transition: opacity 0.3s ease; -} - -.btn-primary:hover, .btn-primary:focus, .btn-primary:active { - transform: translateY(-3px) scale(1.02); - box-shadow: 0 8px 25px rgba(29, 120, 116, 0.5); - color: white !important; -} - -.btn-primary:hover::before { - opacity: 1; -} - -/* Custom Coffee Outline Button */ -.btn-outline-coffee { - color: var(--text-body); - border: 2px solid var(--color-coffee-dark); - background: transparent; - font-weight: 800; - text-transform: uppercase; - font-size: 0.9rem; - letter-spacing: 0.08em; - padding: 0.7em 2em; - border-radius: 50px; - transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); -} - -.btn-outline-coffee:hover, -.btn-outline-coffee:focus { - background: var(--gradient-hero); - color: var(--color-cream); - border-color: transparent; - transform: translateY(-3px) scale(1.02); - box-shadow: 0 8px 25px rgba(59, 47, 47, 0.3); -} - -@media (prefers-color-scheme: dark) { - .btn-outline-coffee { - color: var(--color-cream); - border-color: var(--color-cream); - } -} - -.btn-group-custom { - display: flex; - gap: 1.5rem; - justify-content: center; - flex-wrap: wrap; - margin-bottom: 3rem; -} - -/* Footer */ -footer { - background: linear-gradient(to top, #1a1412, #2c211d) !important; - color: var(--color-cream) !important; - padding: 5rem 0 3rem; - margin-top: 8rem; - position: relative; - border-top: none; -} - -footer::before { - content: ''; - position: absolute; - top: -50px; - left: 0; - width: 100%; - height: 50px; - background: linear-gradient(to top, #2c211d, transparent); - pointer-events: none; -} - -footer a { - color: var(--color-cream); - opacity: 0.7; - transition: opacity 0.3s; -} - -footer a:hover { - opacity: 1; - color: var(--color-gold); - text-shadow: 0 0 10px rgba(212, 165, 116, 0.5); -} - -/* ===== SCROLL PROGRESS BAR ===== */ -.scroll-progress { + padding: 1rem 0; position: fixed; - top: 0; - left: 0; width: 100%; - height: 4px; - background: linear-gradient( - to right, - var(--color-primary) 0%, - var(--color-primary) var(--scroll-progress, 0%), - transparent var(--scroll-progress, 0%) - ); - z-index: 9999; - transition: none; -} - -/* ===== PARTICLE CANVAS (removed) ===== */ - -/* ===== TYPEWRITER EFFECT ===== */ -.typewriter { - opacity: 0; - transition: opacity 0.3s; - position: relative; - display: inline-block; -} - -.typewriter::after { - content: '|'; - position: absolute; - right: -8px; - animation: blink 0.7s infinite; - color: var(--color-secondary); -} - -@keyframes blink { - 0%, 50% { opacity: 1; } - 51%, 100% { opacity: 0; } -} - -/* ===== ANIMATED SKILL BARS ===== */ -.skill-bars { - --bs-list-group-bg: transparent; -} - -.skill-item { - display: flex; - flex-direction: column; - gap: 0.5rem; - padding: 1.25rem; - border-left: 4px solid transparent; - transition: border-color 0.3s, background-color 0.3s; -} - -.skill-item:hover { - border-left-color: var(--color-secondary); -} - -.skill-name { - font-weight: 600; - font-size: 1rem; - color: var(--text-body); -} - -.skill-bar-track { - width: 100%; - height: 8px; - background: color-mix(in srgb, var(--color-coffee-medium), transparent 85%); - border-radius: 50px; - overflow: hidden; - position: relative; -} - -.skill-bar-fill { - height: 100%; - width: 0; - background: linear-gradient(90deg, var(--color-primary), var(--color-secondary)); - border-radius: 50px; - transition: width 1.5s cubic-bezier(0.65, 0, 0.35, 1); - position: relative; - overflow: hidden; -} - -.skill-bar-fill::after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient( - 90deg, - transparent, - rgba(255, 255, 255, 0.3), - transparent - ); - animation: shimmer 2s infinite; -} - -@keyframes shimmer { - 0% { transform: translateX(-100%); } - 100% { transform: translateX(100%); } -} - -.skill-item.animate .skill-bar-fill { - width: var(--skill-level); -} - -/* ===== INTERACTIVE TESTIMONIALS ===== */ -.testimonial-card { - position: relative; - overflow: hidden; - border-radius: 12px; - transition: transform 0.3s ease, box-shadow 0.3s ease; - height: 100%; -} - - - -.testimonial-card:hover { - transform: translateY(-5px); - box-shadow: var(--shadow-soft); - border-color: var(--color-secondary); -} - -.testimonial-header { - display: flex; - align-items: center; - gap: 1rem; - margin-bottom: 1.5rem; - position: relative; - z-index: 2; -} - -.testimonial-avatar { - width: 60px; - height: 60px; - background: linear-gradient(135deg, var(--color-coffee-medium), var(--color-coffee-dark)); - color: var(--color-cream); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-weight: 700; - font-size: 1.5rem; - flex-shrink: 0; - border: 2px solid var(--border-subtle); - box-shadow: 0 4px 10px rgba(0,0,0,0.1); -} - -.testimonial-meta h5 { - margin: 0; - font-size: 1.1rem; - color: var(--text-body); -} - -.testimonial-meta small { - display: block; - font-size: 0.85rem; - opacity: 0.8; - color: var(--color-coffee-medium); -} - -.testimonial-rating { - display: flex; - gap: 0.2rem; - margin-bottom: 1rem; - color: var(--color-gold); -} - -.testimonial-quote-icon { - position: absolute; - top: -10px; - right: 20px; - font-size: 8rem; - line-height: 1; - font-family: serif; - color: var(--color-secondary); - opacity: 0.1; - pointer-events: none; - z-index: 0; -} - -.testimonial-full, .testimonial-excerpt { - font-style: italic; - font-size: 1.05rem; - color: var(--text-body); - position: relative; - z-index: 1; - line-height: 1.7; - margin-bottom: 1.5rem; -} - -.testimonial-full { - display: none; -} - -.testimonial-card.expanded .testimonial-excerpt { - display: none; -} - -.testimonial-card.expanded .testimonial-full { - display: block; -} - -.testimonial-toggle { - background: transparent; - color: var(--color-primary); - border: 2px solid var(--color-primary); - padding: 0.5rem 1.5rem; - border-radius: 50px; - font-weight: 700; - font-size: 0.85rem; - cursor: pointer; - text-transform: uppercase; - letter-spacing: 0.05em; - transition: all 0.2s; - margin-top: auto; - display: inline-block; -} - -.testimonial-toggle:hover { - background: var(--color-primary); - color: white; - transform: translateY(-2px); - box-shadow: 0 4px 10px rgba(29, 120, 116, 0.2); -} - -.testimonial-toggle:active { - transform: translateY(0); -} - -@media (prefers-color-scheme: dark) { - .testimonial-meta h5 { - color: var(--color-cream); - } - .testimonial-meta small { - color: var(--color-secondary); - } -} - -/* Custom Coffee Outline Button */ -.btn-outline-coffee { - color: var(--color-coffee-dark); - border: 2px solid var(--color-coffee-dark); - background: transparent; - font-weight: 700; - text-transform: uppercase; - font-size: 0.85rem; - letter-spacing: 0.05em; - padding: 0.6em 1.2em; - border-radius: 50px; - transition: all 0.3s ease; -} - -.btn-outline-coffee:hover, -.btn-outline-coffee:focus { - background-color: var(--color-coffee-dark); - color: var(--color-cream); - transform: translateY(-2px); - box-shadow: 0 4px 15px rgba(59, 47, 47, 0.2); -} - -@media (prefers-color-scheme: dark) { - .btn-outline-coffee { - color: var(--color-cream); - border-color: var(--color-cream); - } - - .btn-outline-coffee:hover { - background-color: var(--color-cream); - color: var(--color-coffee-dark); - } -} - -.btn-group-custom { - display: flex; - gap: 1rem; - justify-content: center; - flex-wrap: wrap; - margin-bottom: 2rem; -} - -/* Scroll Bounce Animation */ -@keyframes bounce { - 0%, 20%, 50%, 80%, 100% {transform: translateY(0);} - 40% {transform: translateY(-10px);} - 60% {transform: translateY(-5px);} -} -.animate-bounce { - animation: bounce 2s infinite; -} - -/* ===== REDUCED MOTION SUPPORT ===== */ -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - scroll-behavior: auto !important; - } - - .typewriter::after { - animation: none; - } - - .skill-bar-fill::after { - animation: none; - } - - .animate-bounce { - animation: none; - } -} - -/* Metrics Banner */ -.metrics-banner { - background-color: var(--color-coffee-dark); - color: var(--color-cream); - padding-block: 4rem; - position: relative; - z-index: 2; -} - -.metric-item { - display: flex; - flex-direction: column; - align-items: center; - gap: 1rem; - padding: 1rem; - transition: transform 0.3s ease; -} - -.metric-item:hover { - transform: translateY(-5px); -} - -/* Metric Gauge Refinement */ -.gauge { - width: 120px; /* Slightly larger */ - height: 120px; - border-radius: 50%; - background: conic-gradient(var(--color-secondary) var(--percent), rgba(255,255,255,0.05) 0); - position: relative; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 0 10px 30px rgba(0,0,0,0.1); /* Softer shadow */ - transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); -} - -.gauge:hover { - transform: scale(1.1); -} - -.gauge::before { - content: attr(data-score); - position: absolute; - width: 88%; /* Thinner rim */ - height: 88%; - background-color: var(--bg-surface); /* Match card surface */ - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-weight: 800; - font-size: 2.5rem; /* Larger font */ - color: var(--color-coffee-dark); - font-family: var(--font-display); - box-shadow: inset 0 2px 10px rgba(0,0,0,0.05); /* Inner depth */ -} - -@media (prefers-color-scheme: dark) { - .gauge::before { - color: var(--color-gold); - background-color: var(--bg-surface); - } -} - -.metric-label { - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.05em; - font-size: 0.9rem; - opacity: 0.9; - text-align: center; -} - -/* Mobile Responsiveness */ -@media (max-width: 767px) { - .hero-title { - font-size: clamp(2.5rem, 8vw, 5rem); - line-height: 1.1; - margin-bottom: 1.5rem; - } - .hero-subtitle { - font-size: clamp(1rem, 4vw, 1.5rem); - margin-bottom: 2rem; - } - .hero-section { - padding: 1.5rem 1rem; - min-height: 90vh; - } - .btn-group-custom { - flex-direction: column; - align-items: center; - gap: 1rem; - } - .btn-primary, .btn-outline-coffee { - width: 100%; - max-width: 300px; - } - /* Floating elements adjustments */ - .floating-bean, - .floating-cup { - opacity: 0.02; - } - .bean-1, - .bean-2, - .bean-3 { - width: 60px; - } - .bean-2 { - right: -10%; - } - .cup-1 { - width: 80px; - right: 5%; - top: 15%; - } - /* Reduce section padding */ - .section-padding { - padding-block: clamp(3rem, 8vw, 5rem); - } - /* Adjust gauge size */ - .gauge { - width: 80px; - height: 80px; - } - .gauge::before { - font-size: 1.8rem; - } - /* Card adjustments for mobile */ - .card { - margin-bottom: 1.5rem; - } - .card-body { - padding: 1.5rem; - } - .card-title { - font-size: 1.3rem; - } - /* Testimonial adjustments */ - .testimonial-card { - margin-bottom: 1.5rem; - } - .testimonial-avatar { - width: 50px; - height: 50px; - font-size: 1.2rem; - } - .testimonial-quote-icon { - font-size: 6rem; - top: -5px; - right: 10px; - } - /* Tech & Process card adjustments */ - .tech-card, .process-card { - padding: 1.5rem 1rem; - } - .tech-icon-wrapper { - width: 60px; - height: 60px; - } - .process-number { - font-size: 3.5rem; - } - /* Heading adjustments */ - h2 { - font-size: clamp(2rem, 6vw, 3rem); - margin-bottom: 2.5rem; - } - .hero-title { - letter-spacing: -0.03em; - } + bottom: 0; } diff --git a/tos.php b/tos.php new file mode 100644 index 0000000..f723353 --- /dev/null +++ b/tos.php @@ -0,0 +1,52 @@ + + + + + + Terms of Service + + + + +
+

Terms of Service

+

Welcome to our website. If you continue to browse and use this website, you are agreeing to comply with and be bound by the following terms and conditions of use, which together with our privacy policy govern D@N Tech's relationship with you in relation to this website. If you disagree with any part of these terms and conditions, please do not use our website.

+ +

1. Terms

+

By accessing this website, you are agreeing to be bound by these website Terms and Conditions of Use, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site.

+ +

2. Use License

+

Permission is granted to temporarily download one copy of the materials (information or software) on D@N Tech's website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not:

+
    +
  • modify or copy the materials;
  • +
  • use the materials for any commercial purpose, or for any public display (commercial or non-commercial);
  • +
  • attempt to decompile or reverse engineer any software contained on D@N Tech's website;
  • +
  • remove any copyright or other proprietary notations from the materials; or
  • +
  • transfer the materials to another person or "mirror" the materials on any other server.
  • +
+ +

3. Disclaimer

+

The materials on D@N Tech's website are provided "as is". D@N Tech makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties, including without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.

+ +

4. Limitations

+

In no event shall D@N Tech or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on D@N Tech's website, even if D@N Tech or a D@N Tech authorized representative has been notified orally or in writing of the possibility of such damage.

+ +

5. Revisions and Errata

+

The materials appearing on D@N Tech's website could include technical, typographical, or photographic errors. D@N Tech does not warrant that any of the materials on its website are accurate, complete, or current. D@N Tech may make changes to the materials contained on its website at any time without notice. D@N Tech does not, however, make any commitment to update the materials.

+ +

6. Links

+

D@N Tech has not reviewed all of the sites linked to its website and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by D@N Tech of the site. Use of any such linked website is at the user's own risk.

+ +

7. Site Terms of Use Modifications

+

D@N Tech may revise these terms of use for its website at any time without notice. By using this website you are agreeing to be bound by the then current version of these Terms and Conditions of Use.

+ +

8. Governing Law

+

Any claim relating to D@N Tech's website shall be governed by the laws of the State without regard to its conflict of law provisions.

+ +

These terms and conditions were last updated on .

+
+ + + + + \ No newline at end of file