/* Custom Overrides & Animations */

/* Patriotic Color Palette */
:root {
    --color-red: #D2080E;
    --color-blue: #052E6A;
    --color-white: #F0F0EE;
    --color-black: #0E1215;
}

body {
    background-color: var(--color-white);
    color: var(--color-black);
    font-family: sans-serif;
}

html.dark-mode body {
    background-color: #111827;
    color: #F3F4F6;
}
html.dark-mode .bg-white {
    background-color: #1F2937 !important;
    color: #F3F4F6;
}
html.dark-mode .bg-\[\#F0F0EE\] {
    background-color: #111827 !important;
}
html.dark-mode .text-\[\#0E1215\] {
    color: #F3F4F6 !important;
}
html.dark-mode .text-\[\#052E6A\],
html.dark-mode .prose h2,
html.dark-mode .prose h3,
html.dark-mode .breadcrumb a {
    color: #69B7FF !important;
}
html.dark-mode .hover\:text-\[\#052E6A\]:hover,
html.dark-mode .breadcrumb a:hover {
    color: #9BD2FF !important;
}
html.dark-mode .text-gray-600,
html.dark-mode .text-gray-700,
html.dark-mode .text-gray-800 {
    color: #D1D5DB !important;
}
html.dark-mode input,
html.dark-mode textarea,
html.dark-mode select {
    background-color: #1F2937;
    color: #F3F4F6;
    border-color: #4B5563;
}
html.dark-mode .border-gray-200,
html.dark-mode .border-gray-300,
html.dark-mode .border-gray-100 {
    border-color: #4B5563 !important;
}
html.dark-mode .hover\:bg-gray-200:hover {
    background-color: #374151 !important;
}

/* Hero section styling with a lighter, cleaner overlay */
.hero-container {
    background-image: linear-gradient(rgba(5, 46, 106, 0.4), rgba(5, 46, 106, 0.4)), url('logo-hero.jpg');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    min-height: 80vh;
}

/* Smooth Fade-in Animation for Sections */
.fade-in {
    animation: fadeIn 1.5s ease-in;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Hover effect for Portfolio Links */
.hover-scale {
    transition: transform 0.3s ease;
}

.hover-scale:hover {
    transform: scale(1.05);
}

/* Navbar specific */
nav {
    border-bottom: 3px solid var(--color-red);
}

.site-brand {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
}
.site-brand-logo {
    display: block;
    width: 58px;
    height: 48px;
    object-fit: contain;
}
#dark-mode-toggle {
    flex: 0 0 auto;
}

/* Portfolio flip cards — flip on click/tap, not hover */
.flip-card-container {
    perspective: 1000px;
    cursor: pointer;
    border-radius: 0.25rem;
}
.flip-card-container:focus-visible {
    outline: 3px solid var(--color-red);
    outline-offset: 3px;
}
.flip-card-inner {
    position: relative;
    width: 100%;
    height: 300px;
    text-align: center;
    transition: transform 0.6s;
    transform-style: preserve-3d;
}
.flip-card-container.flipped .flip-card-inner {
    transform: rotateY(180deg);
}
.flip-card-front, .flip-card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}
.flip-card-back {
    transform: rotateY(180deg);
}

/* Popup modal fade-in */
#site-popup-overlay {
    animation: fadeIn 0.2s ease-out;
}

/* Blog / article body copy */
.prose h2 {
    color: var(--color-blue);
    font-weight: 700;
    font-size: 1.5rem;
    margin-top: 2rem;
    margin-bottom: 0.75rem;
}
.prose h3 {
    color: var(--color-blue);
    font-weight: 700;
    font-size: 1.25rem;
    margin-top: 1.5rem;
    margin-bottom: 0.5rem;
}
.prose p {
    margin-bottom: 1rem;
    line-height: 1.75;
}
.prose ul {
    list-style: disc;
    margin-left: 1.5rem;
    margin-bottom: 1rem;
}
.prose li {
    margin-bottom: 0.5rem;
}

/* Breadcrumb separators */
.breadcrumb a {
    color: var(--color-blue);
}
.breadcrumb a:hover {
    color: var(--color-red);
}

/* Website concrete assistant */
.concrete-assistant {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 60;
    width: min(24rem, calc(100vw - 2rem));
    font-family: Georgia, 'Times New Roman', serif;
}
.concrete-assistant-launcher,
.concrete-assistant-form button,
.concrete-assistant-close,
.concrete-assistant-common-button,
.concrete-assistant-common-close,
.concrete-assistant-common-questions-list button {
    border: 0;
    cursor: pointer;
    font: inherit;
}
.concrete-assistant-launcher {
    display: grid;
    width: 3.5rem;
    height: 3.5rem;
    margin-left: auto;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-red) 0%, #b30a12 100%);
    color: #fff;
    box-shadow: 0 12px 30px rgba(14, 18, 21, 0.24);
    transition: background 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.concrete-assistant-launcher:hover {
    background: linear-gradient(135deg, #a8060b 0%, #7f060d 100%);
    box-shadow: 0 16px 34px rgba(14, 18, 21, 0.3);
    transform: translateY(-2px) scale(1.02);
}
.concrete-assistant-launcher:focus-visible {
    outline: 3px solid #fbbf24;
    outline-offset: 3px;
}
.concrete-assistant-launcher span {
    position: relative;
    display: block;
    width: 1.5rem;
    height: 1.1rem;
    border-radius: 0.25rem;
    background: #fff;
}
.concrete-assistant-launcher span::after {
    position: absolute;
    right: 0.2rem;
    bottom: -0.28rem;
    width: 0.5rem;
    height: 0.5rem;
    background: #fff;
    content: '';
    transform: skewY(-35deg);
}
.concrete-assistant-panel {
    position: absolute;
    right: 0;
    bottom: 4.25rem;
    display: flex;
    width: 100%;
    max-height: calc(100dvh - 6rem);
    flex-direction: column;
    overflow: hidden;
    border: 1px solid #cbd5e1;
    border-top: 4px solid var(--color-red);
    border-radius: 0.5rem;
    background: #fff;
    color: var(--color-black);
    box-shadow: 0 18px 45px rgba(14, 18, 21, 0.28);
    animation: assistant-panel-in 0.18s ease-out;
}
.concrete-assistant-panel[hidden] {
    display: none;
}
@keyframes assistant-panel-in {
    from {
        opacity: 0;
        transform: translateY(0.5rem) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.concrete-assistant-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    background: var(--color-blue);
    color: #fff;
}
.concrete-assistant-heading p {
    margin: 0;
    color: #cbd5e1;
    font-family: sans-serif;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.concrete-assistant-heading h2 { margin: 0.2rem 0 0; font-size: 1.15rem; }
.concrete-assistant-close { padding: 0.45rem; border-radius: 0.25rem; background: transparent; color: #fff; font-family: sans-serif; font-size: 0.8rem; text-decoration: underline; }
.concrete-assistant-messages { min-height: 5rem; max-height: 18rem; flex: 1 1 auto; overflow-y: auto; padding: 1rem; background: #f8fafc; }
.concrete-assistant-message { max-width: 90%; margin-bottom: 0.75rem; padding: 0.75rem; border-radius: 0.4rem; font-family: sans-serif; font-size: 0.9rem; line-height: 1.45; }
.concrete-assistant-message p { margin: 0; }
.concrete-assistant-message-assistant { margin-right: auto; background: #e5edf8; border-left: 3px solid var(--color-blue); }
.concrete-assistant-message-visitor { margin-left: auto; background: #fee2e2; border-right: 3px solid var(--color-red); }
.concrete-assistant-links { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.7rem; }
.concrete-assistant-links a { color: var(--color-blue); font-weight: 700; text-decoration: underline; }
.concrete-assistant-source { display: block; margin-top: 0.65rem; color: #64748b; font-size: 0.72rem; font-weight: 700; }
.concrete-assistant-toolbar { padding: 0.75rem 1rem 0; }
.concrete-assistant-common-button { display: inline-flex; align-items: center; justify-content: center; width: 100%; padding: 0.6rem 0.8rem; border: 1px solid #bfdbfe; border-radius: 0.3rem; background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%); color: var(--color-blue); font-family: sans-serif; font-size: 0.78rem; font-weight: 700; text-align: center; transition: transform 160ms ease, box-shadow 160ms ease; }
.concrete-assistant-common-button:hover { background: linear-gradient(180deg, #dbeafe 0%, #bfdbfe 100%); transform: translateY(-1px); }
.concrete-assistant-common-button:focus-visible, .concrete-assistant-common-close:focus-visible, .concrete-assistant-common-questions-list button:focus-visible { outline: 3px solid #fbbf24; outline-offset: 2px; }
.concrete-assistant-common-questions { position: fixed; inset: 0; z-index: 80; display: grid; place-items: center; padding: 1rem; background: rgba(15, 23, 42, 0.6); }
.concrete-assistant-common-questions-dialog { width: min(32rem, 100%); max-height: min(80vh, 40rem); overflow: hidden; border-top: 4px solid var(--color-red); border-radius: 0.75rem; background: #fff; box-shadow: 0 20px 40px rgba(15, 23, 42, 0.25); animation: assistant-popup-in 0.18s ease-out; }
@keyframes assistant-popup-in {
    from {
        opacity: 0;
        transform: translateY(0.55rem) scale(0.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
.concrete-assistant-common-questions-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1rem 0.75rem; background: var(--color-blue); color: #fff; }
.concrete-assistant-common-questions-header h3 { margin: 0; color: #fff; font-size: 1.15rem; }
.concrete-assistant-common-close { padding: 0.35rem 0.55rem; border-radius: 0.25rem; background: rgba(255,255,255,0.16); color: #fff; font-family: sans-serif; font-size: 0.75rem; }
.concrete-assistant-common-questions-list { display: flex; flex-direction: column; gap: 0.5rem; max-height: 24rem; overflow-y: auto; padding: 0.9rem 1rem 1rem; background: #f8fafc; }
.concrete-assistant-common-questions-list button { width: 100%; padding: 0.7rem 0.85rem; border: 1px solid #dbeafe; border-radius: 0.35rem; background: #f8fbff; color: var(--color-blue); font-family: sans-serif; font-size: 0.82rem; text-align: left; }
.concrete-assistant-common-questions-list button:hover { background: #edf6ff; }
.concrete-assistant-form { display: grid; grid-template-columns: 1fr auto; gap: 0.5rem; padding: 0.75rem 1rem; }
.concrete-assistant-form textarea { min-height: 2.75rem; resize: vertical; border: 1px solid #94a3b8; border-radius: 0.25rem; padding: 0.55rem; color: var(--color-black); font-family: sans-serif; font-size: 0.9rem; }
.concrete-assistant-form button { align-self: stretch; border-radius: 0.25rem; padding: 0.7rem; background: var(--color-blue); color: #fff; font-family: sans-serif; font-size: 0.85rem; font-weight: 700; }
.concrete-assistant-form button:disabled { cursor: wait; opacity: 0.7; }
.concrete-assistant-note { margin: 0; padding: 0 1rem 1rem; color: #64748b; font-family: sans-serif; font-size: 0.7rem; line-height: 1.35; }
html.dark-mode .concrete-assistant-panel { background: #1f2937; border-color: #4b5563; color: #f3f4f6; }
html.dark-mode .concrete-assistant-messages { background: #111827; }
html.dark-mode .concrete-assistant-message-assistant { background: #1e3a5f; }
html.dark-mode .concrete-assistant-message-visitor { background: #5f2025; }
html.dark-mode .concrete-assistant-common-questions-dialog { background: #1f2937; color: #f3f4f6; }
html.dark-mode .concrete-assistant-common-questions-header { border-bottom-color: #374151; }
html.dark-mode .concrete-assistant-common-questions-list button { background: #111827; border-color: #374151; color: #dbeafe; }
html.dark-mode .concrete-assistant-form textarea { background: #111827; color: #f3f4f6; border-color: #64748b; }
@media (max-width: 640px) {
    .concrete-assistant { right: 0.75rem; bottom: 0.75rem; width: min(100% - 1.5rem, 24rem); }
    .concrete-assistant-panel { bottom: 4rem; max-height: calc(100dvh - 5.25rem); }
    .concrete-assistant-messages { max-height: 15rem; }
    .concrete-assistant-common-questions-dialog { width: min(100%, 24rem); }
    .concrete-assistant-common-questions-list { max-height: 19rem; }
}