/* --- Global Resets & Base Styles --- */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    /* Mid-Century Modern Enhanced Color Palette */
    --color-background: #F8F5F2; /* Creamy off-white */
    --color-text: #333333;       /* Dark Grey */
    --color-text-light: #F8F5F2; /* Light text for dark backgrounds */
    --color-primary: #008080;    /* Teal */
    --color-primary-dark: #006666; /* Darker Teal */
    --color-secondary: #E87A00;  /* Muted Orange */
    --color-secondary-dark: #B86200; /* Darker Orange */
    --color-accent: #A0522D;     /* Sienna/Wood Tone */
    --color-accent-light: #C8A183; /* Lighter wood tone for accents */
    --color-border: #E0E0E0;     /* Light Grey for subtle borders */
    --color-white: #FFFFFF;
    --color-shadow: rgba(0, 0, 0, 0.08); /* Softer shadow color */

    /* Typography */
    --font-heading: 'Montserrat', sans-serif;
    --font-body: 'Lato', sans-serif;
    --base-font-size: clamp(16px, 1.5vw + 0.1rem, 18px); /* Fluid base font size */
    --line-height-base: 1.7;
    --line-height-heading: 1.3;

    /* Spacing & Layout */
    --spacing-unit: 1rem;
    --container-max-width: 1200px;
    --container-padding: clamp(1rem, 4vw, 2.5rem); /* Fluid padding */
    --section-padding: clamp(4rem, 10vw, 8rem); /* Fluid section padding */
    --section-padding-large: clamp(5rem, 12vw, 10rem);

    /* Transitions & Animations */
    --transition-speed-fast: 0.2s;
    --transition-speed-medium: 0.4s;
    --transition-speed-slow: 0.6s;
    --transition-easing: cubic-bezier(0.25, 0.46, 0.45, 0.94); /* Smooth ease-out */
    --animation-delay-step: 100ms;

    /* Borders & Shadows */
    --border-radius-small: 4px;
    --border-radius-medium: 8px;
    --box-shadow-subtle: 0 4px 12px var(--color-shadow);
    --box-shadow-hover: 0 8px 20px rgba(0, 0, 0, 0.12);
}

/* --- Smooth Scrolling & Font Smoothing --- */
html {
    font-size: 100%;
    scroll-behavior: smooth;
    scroll-padding-top: 80px; /* Adjust based on sticky header height */
}

body {
    font-family: var(--font-body);
    font-size: var(--base-font-size);
    line-height: var(--line-height-base);
    color: var(--color-text);
    background-color: var(--color-background);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden; /* Prevent horizontal scroll caused by animations */
}

/* --- Preloader --- */
.preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--color-background);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
    transition: opacity var(--transition-speed-medium) ease, visibility var(--transition-speed-medium) ease;
}

.preloader-icon {
    width: 50px;
    height: 50px;
    border: 4px solid var(--color-accent-light);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

body.preload .preloader {
    opacity: 1;
    visibility: visible;
}

body:not(.preload) .preloader {
    opacity: 0;
    visibility: hidden;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* --- General Layout & Container --- */
.site-wrapper {
    /* Helps contain fixed elements if needed */
}

.container {
    max-width: var(--container-max-width);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--container-padding);
    padding-right: var(--container-padding);
}

.section-padding {
    padding-top: var(--section-padding);
    padding-bottom: var(--section-padding);
}

.section-padding-large {
    padding-top: var(--section-padding-large);
    padding-bottom: var(--section-padding-large);
}

.has-background-accent {
    background-color: var(--color-accent); /* Example: Using accent for contact */
    color: var(--color-text-light); /* Adjust text color on dark background */
}

/* --- Typography Enhancements --- */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    line-height: var(--line-height-heading);
    color: var(--color-primary);
    margin-bottom: calc(var(--spacing-unit) * 1.5);
}

.hero-headline {
    font-size: clamp(2.5rem, 7vw, 5.5rem); /* Larger, fluid hero headline */
    font-weight: 700;
    margin-bottom: calc(var(--spacing-unit) * 2);
    line-height: 1.1; /* Tighter line height for large headings */
    color: var(--color-text); /* Main text color for hero */
}
.hero-headline .line {
    display: block; /* Ensure lines stack */
    /* Animation setup: Hide initially */
    opacity: 0;
    transform: translateY(30px);
    animation: reveal-line 0.8s var(--transition-easing) forwards;
}
/* Staggered line animation */
.hero-headline .line:nth-child(1) { animation-delay: 0.4s; }
.hero-headline .line:nth-child(2) { animation-delay: 0.55s; }
.hero-headline .line:nth-child(3) { animation-delay: 0.7s; }

@keyframes reveal-line {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.section-title {
    font-size: clamp(2rem, 5vw, 3.5rem);
    text-align: center;
    margin-bottom: var(--spacing-unit);
    position: relative;
    color: var(--color-primary);
}
.light-text .section-title, /* Target sections with light text */
.has-background-accent .section-title {
    color: var(--color-white); /* White title on dark background */
}


.section-subtitle {
    font-size: clamp(1rem, 2vw, 1.25rem);
    font-family: var(--font-body);
    font-weight: 400;
    text-align: center;
    color: var(--color-text);
    opacity: 0.8;
    max-width: 60ch;
    margin: 0 auto calc(var(--spacing-unit) * 3);
}
.light-text .section-subtitle,
.has-background-accent .section-subtitle {
     color: var(--color-text-light);
     opacity: 0.9;
}

h3 {
    font-size: clamp(1.3rem, 3vw, 1.75rem);
    font-weight: 600;
    margin-bottom: var(--spacing-unit);
}

p {
    margin-bottom: var(--spacing-unit);
    max-width: 65ch; /* Maintain readability */
}
p:last-child { margin-bottom: 0; }

a {
    color: var(--color-primary);
    text-decoration: none;
    position: relative;
    transition: color var(--transition-speed-fast) ease;
}
a::after { /* Subtle underline animation */
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    width: 100%;
    height: 1px;
    background-color: var(--color-secondary);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--transition-speed-medium) var(--transition-easing);
}
a:hover, a:focus {
    color: var(--color-secondary);
}
a:hover::after, a:focus::after {
    transform: scaleX(1);
}
/* Links on dark backgrounds */
.has-background-accent a {
    color: var(--color-text-light);
}
.has-background-accent a:hover, .has-background-accent a:focus {
    color: var(--color-accent-light);
}
.has-background-accent a::after {
    background-color: var(--color-accent-light);
}

/* --- Buttons --- */
.btn {
    display: inline-block; /* Use inline-block for text flow */
    font-family: var(--font-heading);
    font-size: clamp(0.85rem, 1.5vw, 1rem);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: clamp(0.8rem, 2vw, 1rem) clamp(1.5rem, 4vw, 2.5rem);
    border-radius: var(--border-radius-small);
    border: 2px solid transparent;
    cursor: pointer;
    text-align: center;
    transition: all var(--transition-speed-medium) var(--transition-easing);
    position: relative;
    overflow: hidden; /* For pseudo-element animations */
    min-height: 48px; /* Ensure good tap target size */
    line-height: 1.4; /* Align text vertically */
    vertical-align: middle; /* Align with text */
}
.btn::before { /* Background fill animation element */
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 100%;
    transition: width var(--transition-speed-medium) var(--transition-easing);
    z-index: -1; /* Behind text */
}

.btn-primary {
    background-color: var(--color-primary);
    color: var(--color-white);
    border-color: var(--color-primary);
}
.btn-primary::before {
    background-color: var(--color-primary-dark);
}
.btn-primary:hover, .btn-primary:focus {
    color: var(--color-white);
    border-color: var(--color-primary-dark);
}
.btn-primary:hover::before, .btn-primary:focus::before {
    width: 100%;
}

.btn-secondary {
    background-color: transparent;
    color: var(--color-primary);
    border-color: var(--color-primary);
}
.btn-secondary::before {
    background-color: var(--color-primary);
}
.btn-secondary:hover, .btn-secondary:focus {
    color: var(--color-white); /* Text turns white on hover */
    border-color: var(--color-primary);
}
.btn-secondary:hover::before, .btn-secondary:focus::before {
    width: 100%;
}
/* Button on dark background */
.has-background-accent .btn-primary {
     background-color: var(--color-secondary); /* Orange button on accent bg */
     border-color: var(--color-secondary);
     color: var(--color-text);
}
.has-background-accent .btn-primary::before {
    background-color: var(--color-secondary-dark);
}
.has-background-accent .btn-primary:hover,
.has-background-accent .btn-primary:focus {
    border-color: var(--color-secondary-dark);
}


button:disabled, .btn:disabled {
    background-color: #cccccc !important;
    border-color: #cccccc !important;
    color: #666666 !important;
    cursor: not-allowed;
    opacity: 0.7;
}
button:disabled::before, .btn:disabled::before {
    width: 0 !important; /* Disable hover effect */
}

/* Focus visible for keyboard navigation */
.btn:focus-visible {
    outline: 3px solid var(--color-secondary);
    outline-offset: 2px;
}
a:focus-visible {
     outline: 2px dashed var(--color-secondary);
     outline-offset: 3px;
}

/* --- Header --- */
.site-header {
    position: sticky; /* Sticky header */
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    background-color: rgba(248, 245, 242, 0.85); /* Semi-transparent background */
    backdrop-filter: blur(10px); /* Glassmorphism effect */
    -webkit-backdrop-filter: blur(10px);
    padding: calc(var(--spacing-unit) * 0.8) 0; /* Reduced padding for sticky */
    border-bottom: 1px solid transparent; /* Placeholder for scroll effect */
    transition: background-color var(--transition-speed-fast) ease,
                border-color var(--transition-speed-fast) ease,
                box-shadow var(--transition-speed-fast) ease;
}
.site-header.scrolled { /* Class added via JS on scroll */
    background-color: rgba(248, 245, 242, 0.95);
    border-bottom-color: var(--color-border);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}

.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 var(--container-padding);
}

.logo-link {
    display: block;
    text-decoration: none;
    transition: transform var(--transition-speed-fast) ease;
}
.logo-link:hover {
    transform: scale(1.03);
}
.logo-link::after { display: none; } /* Remove underline from logo */

.logo .logo-main {
    font-family: var(--font-heading);
    font-size: clamp(1.3rem, 2.5vw, 1.6rem);
    font-weight: 700;
    color: var(--color-text);
    display: block;
    transition: color var(--transition-speed-fast) ease;
}
.logo .logo-sub {
    font-size: clamp(0.75rem, 1.5vw, 0.85rem);
    color: var(--color-text);
    opacity: 0.7;
    display: block;
    margin-top: 0.15rem;
    transition: opacity var(--transition-speed-fast) ease;
}
.logo-link:hover .logo-main { color: var(--color-primary); }
.logo-link:hover .logo-sub { opacity: 1; }

.main-navigation ul {
    list-style: none;
    display: flex;
    gap: clamp(1rem, 3vw, 2rem);
}
.main-navigation a {
    font-family: var(--font-heading);
    font-size: clamp(0.9rem, 1.8vw, 1rem);
    font-weight: 600;
    color: var(--color-text);
    padding: 0.5rem 0; /* Add padding for hover effect */
}
.main-navigation a::after { /* Nav link underline */
    bottom: 0;
    height: 2px;
    background-color: var(--color-primary);
}

.header-buttons {
    display: flex;
    gap: calc(var(--spacing-unit) * 0.75);
}
.header-buttons .btn { /* Slightly smaller header buttons */
     padding: clamp(0.6rem, 1.5vw, 0.8rem) clamp(1rem, 3vw, 1.5rem);
     font-size: clamp(0.8rem, 1.2vw, 0.9rem);
     min-height: 40px;
}

.mobile-nav-toggle { /* Basic mobile menu button */
    display: none; /* Hidden by default */
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    z-index: 1010; /* Above header content */
}
.mobile-nav-toggle span {
    display: block;
    width: 25px;
    height: 3px;
    background-color: var(--color-text);
    margin: 5px 0;
    transition: all var(--transition-speed-medium) ease;
}
/* Add active states for burger animation later if implementing mobile menu */

/* --- Hero / About Section --- */
.hero-about-section {
    min-height: calc(100vh - 80px); /* Adjust based on header height */
    display: flex;
    align-items: center;
    position: relative; /* For pseudo-elements or absolute positioning */
    overflow: hidden; /* Contain any decorative elements */
}

.hero-layout {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
    align-items: center;
    gap: clamp(2rem, 6vw, 5rem);
    width: 100%; /* Ensure grid takes full container width */
}

.hero-content {
    position: relative;
    z-index: 2;
}

.about-text {
    margin-top: calc(var(--spacing-unit) * 2.5);
    font-size: clamp(1rem, 2vw, 1.15rem);
    line-height: 1.8; /* Slightly more spacing for intro */
    max-width: 55ch;
}

.hero-cta {
    margin-top: calc(var(--spacing-unit) * 2.5);
}

.profile-image-area {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
}

.profile-image-wrapper {
    position: relative;
    max-width: clamp(280px, 35vw, 450px); /* Responsive max width */
    width: 100%;
    aspect-ratio: 1 / 1; /* Ensure square shape */
    z-index: 1;
}

.profile-image-bg-shape { /* Decorative background shape */
    position: absolute;
    top: 50%;
    left: 50%;
    width: 110%; /* Slightly larger than image */
    height: 110%;
    background-color: var(--color-accent-light); /* Light wood tone */
    border-radius: 45% 55% 60% 40% / 50% 45% 55% 50%; /* Organic blob shape */
    transform: translate(-50%, -50%) rotate(15deg);
    opacity: 0.5;
    z-index: -1; /* Behind image */
    /* Subtle animation */
     animation: blob-morph 15s linear infinite alternate;
}

@keyframes blob-morph {
    0% { border-radius: 45% 55% 60% 40% / 50% 45% 55% 50%; transform: translate(-50%, -50%) rotate(15deg) scale(1); }
    50% { border-radius: 60% 40% 50% 50% / 45% 55% 45% 55%; transform: translate(-50%, -50%) rotate(5deg) scale(1.05); }
    100% { border-radius: 45% 55% 60% 40% / 50% 45% 55% 50%; transform: translate(-50%, -50%) rotate(15deg) scale(1); }
}

#profile-pic {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
    border: 8px solid var(--color-white);
    box-shadow: var(--box-shadow-subtle);
    position: relative; /* Ensure it's above the bg shape */
    z-index: 1;
}


/* --- Portfolio Section --- */
.portfolio-section {
    background-color: var(--color-white); /* Alternate section background */
}

.projects-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
    gap: clamp(1.5rem, 4vw, 3rem);
}

.project {
    background-color: var(--color-background); /* Card background */
    border-radius: var(--border-radius-medium);
    overflow: hidden;
    box-shadow: var(--box-shadow-subtle);
    transition: transform var(--transition-speed-medium) var(--transition-easing),
                box-shadow var(--transition-speed-medium) var(--transition-easing);
    display: flex; /* Use flex for figure */
}

.project:hover {
    transform: translateY(-8px);
    box-shadow: var(--box-shadow-hover);
}

.project-figure {
    display: flex;
    flex-direction: column;
    height: 100%; /* Ensure figure takes full height */
}

.project-img-container {
    position: relative;
    overflow: hidden; /* Contain image scale */
    background-color: var(--color-border); /* BG for image load */
}

.project-img-link {
    display: block;
    position: relative;
}
.project-img-link::after { display: none; } /* Remove default link underline */

.project-img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 10; /* Slightly wider aspect ratio */
    object-fit: cover;
    transition: transform var(--transition-speed-slow) var(--transition-easing);
}
.project:hover .project-img {
    transform: scale(1.05); /* Subtle zoom on hover */
}

.project-img-overlay { /* Hover overlay */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 128, 128, 0.7); /* Primary color overlay */
    display: flex;
    justify-content: center;
    align-items: center;
    opacity: 0;
    transition: opacity var(--transition-speed-medium) var(--transition-easing);
}
.project-img-overlay span {
    color: var(--color-white);
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 1.1rem;
    transform: translateY(10px);
    transition: transform var(--transition-speed-medium) var(--transition-easing);
}
.project:hover .project-img-overlay {
    opacity: 1;
}
.project:hover .project-img-overlay span {
    transform: translateY(0);
}

.project-details {
    padding: clamp(1rem, 3vw, 1.5rem);
    flex-grow: 1; /* Allow details to fill vertical space */
    display: flex;
    flex-direction: column;
}
.project-details h3 {
    color: var(--color-text);
}
.project-details p {
    margin-bottom: auto; /* Pushes tags to the bottom */
    padding-bottom: var(--spacing-unit); /* Space before tags */
}

.project-tags {
    margin-top: var(--spacing-unit);
    display: flex;
    flex-wrap: wrap;
    gap: calc(var(--spacing-unit) * 0.5);
}
.tag {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    background-color: var(--color-accent-light);
    color: var(--color-text);
    padding: 0.3em 0.8em;
    border-radius: var(--border-radius-small);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}


/* --- Contact Section --- */
.contact-section {
    color: var(--color-text-light); /* Ensure all text defaults to light */
    text-align: center;
}

.contact-content-wrapper {
    max-width: 800px;
    margin: 0 auto;
}

.contact-details {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: clamp(1.5rem, 4vw, 2.5rem);
    margin-bottom: calc(var(--spacing-unit) * 3);
    text-align: left; /* Align items left within grid */
}

.contact-item {
    display: flex;
    flex-direction: column;
    align-items: center; /* Center items vertically */
    text-align: center;
}

/* Basic icon styling - replace with actual SVGs */
.contact-icon {
    display: block;
    width: 40px;
    height: 40px;
    background-color: var(--color-secondary); /* Placeholder */
    border-radius: 50%;
    margin-bottom: var(--spacing-unit);
    /* Add mask property if using SVG */
}

.contact-label {
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.25rem;
    opacity: 0.8;
}

.contact-link {
    font-size: clamp(1rem, 2vw, 1.1rem);
    color: var(--color-text-light); /* Ensure light color */
    word-break: break-word; /* Prevent long links breaking layout */
}
.contact-link:hover {
     color: var(--color-accent-light);
}

.contact-cta {
     margin-top: var(--spacing-unit); /* Space above final CTA */
}

/* --- Footer --- */
.site-footer {
    background-color: var(--color-text); /* Dark footer background */
    color: var(--color-background); /* Light text */
    padding: calc(var(--spacing-unit) * 3) 0;
    margin-top: var(--section-padding); /* Space above footer */
}

.footer-content {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 var(--container-padding);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: calc(var(--spacing-unit) * 2);
}

.footer-logo {
    font-family: var(--font-heading);
    font-size: 1.5rem;
    font-weight: 700;
}

.footer-navigation ul {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: clamp(1rem, 3vw, 1.5rem);
}
.footer-navigation a {
    font-size: 0.9rem;
    color: var(--color-background);
    opacity: 0.8;
}
.footer-navigation a:hover, .footer-navigation a:focus {
    opacity: 1;
    color: var(--color-secondary); /* Highlight color on hover */
}
.footer-navigation a::after {
    background-color: var(--color-secondary);
}

.footer-copyright {
    font-size: 0.85rem;
    opacity: 0.7;
    width: 100%; /* Take full width on wrap */
    text-align: center; /* Center copyright when wrapped */
    margin-top: var(--spacing-unit); /* Space when wrapped */
}


/* --- Animations & Reveals --- */
/* Initial state for reveal elements */
.reveal {
    opacity: 0;
    transform: translateY(30px); /* Default: slide up */
    transition: opacity var(--transition-speed-slow) var(--transition-easing),
                transform var(--transition-speed-slow) var(--transition-easing);
    transition-delay: calc(var(--animation-delay-step) * var(--delay, 0)); /* Use CSS var for delay */
    will-change: opacity, transform; /* Performance hint */
}
.reveal.fade-in { transform: translateY(0); }
.reveal.scale-in { transform: scale(0.9); }

/* Active state (add this class via JS when element is in view) */
.reveal.visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* Calculate delay based on data-delay attribute */
/* Needs JS to set the --delay variable, or use inline styles: style="--delay: 1;" etc. */


/* --- Back to Top Button --- */
.back-to-top-btn {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    z-index: 500;
    background-color: var(--color-primary);
    color: var(--color-white);
    border-radius: 50%;
    width: 50px;
    height: 50px;
    padding: 0; /* Override default padding */
    font-size: 1.5rem;
    display: flex; /* Center icon */
    justify-content: center;
    align-items: center;
    box-shadow: var(--box-shadow-subtle);
    opacity: 0; /* Hidden by default */
    visibility: hidden;
    transform: translateY(20px);
    transition: opacity var(--transition-speed-medium) ease,
                visibility var(--transition-speed-medium) ease,
                transform var(--transition-speed-medium) ease;
}
.back-to-top-btn.visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.back-to-top-btn:hover, .back-to-top-btn:focus {
     background-color: var(--color-primary-dark);
     transform: scale(1.1); /* Add hover scale */
}
.back-to-top-btn::before { display: none; } /* Disable fill animation */


/* --- Responsive Design --- */

/* Tablet (<= 1024px) */
@media (max-width: 1024px) {
    .hero-layout {
        gap: clamp(2rem, 4vw, 3rem);
    }
    .projects-grid {
        gap: clamp(1.5rem, 3vw, 2rem);
    }
}

/* Mobile Menu Trigger & Layout (<= 768px) */
@media (max-width: 768px) {
    html { scroll-padding-top: 70px; } /* Adjust for smaller header */

    .main-navigation, .header-buttons {
        display: none; /* Hide desktop nav and buttons */
    }
    .mobile-nav-toggle {
        display: block; /* Show hamburger */
    }

    .site-header {
         padding: calc(var(--spacing-unit) * 0.6) 0;
    }

     /* Mobile Nav Panel Styles (Add when implementing JS toggle) */
    /* .mobile-nav-panel { position: fixed; top: 0; right: -100%; ... } */
    /* .mobile-nav-panel.is-open { right: 0; ... } */

    .hero-about-section {
        min-height: auto; /* Allow natural height */
        text-align: center;
    }
    .hero-layout {
        grid-template-columns: 1fr; /* Stack hero content */
        text-align: center;
    }
    .hero-content {
        order: 2; /* Text below image */
        margin-top: calc(var(--spacing-unit) * 2);
    }
    .profile-image-area {
        order: 1; /* Image above text */
        margin: 0 auto; /* Center */
    }
    .about-text { margin-left: auto; margin-right: auto; } /* Center text block */
    .hero-cta { margin: calc(var(--spacing-unit) * 2) auto 0; display: table; } /* Center button */

     .profile-image-wrapper {
         max-width: 280px;
     }

    .section-title {
         font-size: clamp(1.8rem, 6vw, 2.5rem);
    }
    .section-subtitle {
        font-size: clamp(0.9rem, 3vw, 1.1rem);
    }

     .projects-grid {
         grid-template-columns: 1fr; /* Single column projects */
         gap: calc(var(--spacing-unit) * 2);
     }

     .contact-details {
         grid-template-columns: 1fr; /* Stack contact items */
         gap: calc(var(--spacing-unit) * 2);
     }

     .footer-content {
         flex-direction: column;
         text-align: center;
     }
     .footer-navigation ul {
         justify-content: center;
     }
     .footer-copyright {
         margin-top: 0; /* Reduce space as it's already centered */
     }
}

/* Smaller Mobiles (<= 480px) */
@media (max-width: 480px) {
    :root {
        --section-padding: clamp(3rem, 8vw, 4rem);
        --section-padding-large: clamp(4rem, 10vw, 5rem);
    }
    .hero-headline {
        font-size: clamp(2rem, 8vw, 2.8rem);
    }
     .profile-image-wrapper {
         max-width: 240px;
         border-width: 6px;
     }
    .btn { /* Reduce button padding */
        padding: clamp(0.7rem, 3vw, 0.9rem) clamp(1.2rem, 5vw, 1.8rem);
    }
    .header-buttons .btn { /* Ensure editor buttons are usable */
         padding: 0.6rem 1rem;
         font-size: 0.75rem;
    }
}


/* --- Edit Mode Styling (Subtle Integration) --- */
.edit-mode .editable {
    outline: 1px dashed rgba(232, 122, 0, 0.5); /* Subtle dashed outline */
    transition: outline 0.2s ease;
    cursor: text; /* Indicate text editability */
}
.edit-mode .editable:hover,
.edit-mode .editable:focus {
    outline: 2px solid var(--color-secondary);
    background-color: rgba(232, 122, 0, 0.05); /* Faint highlight on hover/focus */
}

/* Image edit indicators */
.edit-mode .project-img-container,
.edit-mode .profile-image-wrapper {
    position: relative;
    cursor: pointer;
}
.edit-mode .project-img-container::after,
.edit-mode .profile-image-wrapper::after {
    content: "Edit Image"; /* Simple text */
    position: absolute;
    bottom: 10px; /* Position bottom right */
    right: 10px;
    background: rgba(0, 0, 0, 0.7);
    color: white;
    padding: 5px 10px;
    border-radius: var(--border-radius-small);
    font-size: 12px;
    font-family: var(--font-body);
    opacity: 0;
    transition: opacity var(--transition-speed-medium) ease;
    pointer-events: none;
    z-index: 10;
    transform: translateY(5px); /* Start slightly down */
}
.edit-mode .project-img-container:hover::after,
.edit-mode .profile-image-wrapper:hover::after {
    opacity: 1;
    transform: translateY(0);
}

/* Image pending upload indicator */
.edit-mode img[data-pending-upload="true"] {
    outline: 3px solid var(--color-secondary);
    outline-offset: 3px;
    box-shadow: 0 0 15px rgba(232, 122, 0, 0.4); /* Add glow */
}

/* Ensure edit buttons fit */
.edit-mode .header-buttons {
    display: flex !important; /* Override potential mobile hiding if logged in */
    flex-wrap: wrap; /* Allow wrapping */
}

/* Add styles for .image-upload-overlay etc. if needed */