

:root {
    /* --links-hover-bg-colour: gray;
    --links-soc-bg-colour: #BFBFBF;
    --links-dev-bg-colour: #D3D3D3;
    --links-pub-bg-colour: #CFCFCF;
    --links-art-bg-colour: #C3C3C3;
    --links-pro-bg-colour: #C7C7C7;
    --links-tec-bg-colour: #CBCBCB;
    --links-oth-bg-colour: #BBBBBB; */

    /* --links-fg-colour: black;
    --body-bg-colour: white;
    --portfolio-link-background-color: #F3F3F3;
    --portfolio-link-background-color-hover: #E3E3E3;
    --portfolio-pub-link-background-color: white;
    --cv-chat-border-color: black;
    
    */
    
    --links-fg-colour: #EEEEEE;
    --body-bg-colour: black;
    --portfolio-link-background-color: #222222;
    --portfolio-link-background-color-hover: #555555;
    --portfolio-link-background-color-disabled: #333333;
    --portfolio-pub-link-background-color: black;

    --font-family-title: 'Montserrat', 'Arial', sans-serif;
    --font-family-text: 'Hind', 'Arial', sans-serif;
    --font-family-code: 'Doto', 'Arial', sans-serif;
    font-size: 16px;

    --cv-chat-border-color: white;
    --cv-chat-fg-color: white;
    --cv-chat-bg-color: black;
    --cv-chat-button-hover-color: gray;
    --cv-chat-button-active-color: darkgray;
    --cv-chat-button-loaded-color: #343434;
    --cv-chat-button-pulse-low-color: #222222;
    --cv-chat-button-pulse-high-color: white;
    --cv-chat-scroll-hover-color: lightgray;
    --cv-chat-pdf-upload-overlay-color: rgba(0, 0, 0, 0.5);
    --cv-chat-pdf-upload-bg-color: white;
    --cv-chat-pdf-upload-fg-color: black;
    --cv-chat-pdf-upload-shadow-color: rgba(0, 0, 0, 0.2);
    --cv-chat-pdf-upload-dragging-color: #555555;
}


* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    /* border: red solid 2px; */
}

body {
    font-family: var(--font-family-title);
    font-size: 16px;
    background-color: var(--body-bg-colour);
    color: var(--links-fg-colour);
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
    min-height: 100svh;
    justify-content: space-between;
}


/*/////////////////////////////////////////////////////////////////////////////
    header
/////////////////////////////////////////////////////////////////////////////*/

header {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 3rem 0;
}

header h1 {
    font-size: rem;
    /* margin-bottom: 0.1em; */
    text-align: center;
}

header .lede {
    margin-top: 0.25rem;
    font-size: 1.2rem;
    text-align: center;
    margin-bottom: 2.2rem;
}

header .summary {
    /* margin-top: 0.6rem; */
    margin-top: 0.6rem;
    font-size: 0.9rem;
    text-align: justify;
    width: 35vw;
    font-family: var(--font-family-text);
    min-width: 300px;
}

header .summaryli {
    margin-left: 2.0rem;
}


header .summary a {
    margin-top: 0.6rem;
    font-size: 0.9rem;
    text-align: center;
    color: var(--links-fg-colour);
}

header ul {
    /* text-align: center; */
    text-align: justify;

}

header li {
    
    font-family: var(--font-family-text);
    font-size: 0.9rem;
}



/*/////////////////////////////////////////////////////////////////////////////
    CV chat
/////////////////////////////////////////////////////////////////////////////*/

#cv-chat-container {
    display: none;
    /* display: flex; */
    flex-direction: column;
    align-items: stretch; /* Allow children to stretch */
    /* padding: 3rem 0; */
    background: var(--cv-chat-bg-color);
    align-content: flex-start;
    height: 420px;
    width: 80%;
    border-radius: 5px;
    /* overflow: hidden; */
    border: 1px solid var(--cv-chat-border-color);
    min-width: 320px;
    max-width: 920px;
    padding-left: 3px;
    padding-right: 3px;
    opacity: 0;
    visibility: hidden;
    transition: opacity 1.5s ease-in-out, visibility 1.5s;
}

#cv-chat-container.show {
    opacity: 1;
    visibility: visible;
}

#cv-chat-container .messages {
    flex: 1; /* Allows it to take all available space */
    display: flex;
    flex: 1; /* Allows it to take all available height */
    flex-direction: column;
    align-items: center;
    background: transparent;
    align-content: flex-start;
    /* height: 100%; */
    width: 100%;
    overflow-y: auto; /* Enables vertical scrolling when content overflows */
    scrollbar-width: thin; /* For Firefox */
    scrollbar-color: var(--cv-chat-fg-color) var(--cv-chat-bg-color); /* Custom scrollbar color */
}

#cv-chat-container::-webkit-scrollbar {
    margin-right: 15px;
}

#cv-chat-container .input-container {
    display: flex;
    /* padding: 10px; */
    /* background: gray; */
    width: 100%;
    background: transparent;
    align-items: center; /* Keep button and input aligned */
    border-top: 1px solid white; /* Ensure it doesn't disappear */
}

/* #cv-chat-container .input-container input {
    flex: 1;
    padding: 5px;
    font-size: .75rem;
    background: black;
    color: white;
    border: none;
    border-top: white solid 1px;
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
} */

#cv-chat-container .input-container textarea {
    flex: 1;
    padding: 5px;
    font-size: .75rem;
    background: var(--cv-chat-bg-color);
    color: var(--cv-chat-fg-color);
    border: none;
    outline: none; /* Removes default focus outline */
    /* max-height: 200px; */
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
    min-height: 1.5rem; /* Minimum height for a single line */
    max-height: 6rem; /* Limits growth to around 5-6 lines */
    overflow-y: auto; /* Enables scrolling when max height is reached */
    resize: none; /* Prevent manual resizing */

    /* Custom scrollbar styles for WebKit browsers */
    scrollbar-width: thin; /* Firefox */
    scrollbar-color: var(--cv-chat-fg-color) var(--cv-chat-bg-color); /* Scrollbar track black, handle white */
}

#cv-chat-container .input-container textarea:focus {
    /* border-top: 1px solid white; */
    outline: none; /* Prevent default blue outline */
}

/* WebKit (Chrome, Edge, Safari) scrollbar */
#cv-chat-container .input-container textarea::-webkit-scrollbar {
    width: 8px; /* Thin scrollbar */
}

#cv-chat-container .input-container textarea::-webkit-scrollbar-thumb {
    background: var(--cv-chat-bg-color); /* Scrollbar handle color */
    border-radius: 4px; /* Rounded scrollbar handle */
}

#cv-chat-container .input-container textarea::-webkit-scrollbar-thumb:hover {
    background: var(--cv-chat-scroll-hover-color); /* Lighter color when hovered */
}

#cv-chat-container .input-container textarea::-webkit-scrollbar-track {
    background: var(--cv-chat-bg-color); /* Scrollbar track color */
    border-radius: 4px;
}


#cv-chat-container .messages .base-message {
    background: var(--cv-chat-fg-color);
    color: var(--cv-chat-bg-color);
    padding: 8px;
    margin: 5px;
    border-radius: 5px;
    width: fit-content;
    max-width: 80%;
    font-size: .75rem;
    opacity: 0;
    visibility: hidden;
    /* transition: opacity 12.5s ease-in-out, visibility 12.5s; */
    transition: opacity .75s ease-in-out;
}


#cv-chat-container .messages .base-message.visible {
    visibility: visible;
}

#cv-chat-container .messages .base-message.show {
    opacity: 1;
}

#cv-chat-container .messages .user-message {
    align-self: flex-end; /* Aligns user messages to the right */
}
#cv-chat-container .messages .assistant-message {
    align-self: flex-start; /* Aligns user messages to the right */
}


#cv-chat-container .messages ol {
    padding-left: 1.5rem;
}

#cv-chat-container .send-button,
#cv-chat-container .pdf-button,
#cv-chat-container .reset-button {
    background: transparent;
    color: var(--cv-chat-fg-color);
    border: none;
    font-size: .75rem;
    margin-left: 4px;
    margin-right: 4px;
    margin-bottom: 4px;
    /* padding: 5px 10px; */
    width: 1rem;
    /* height: 1rem; */
    padding: 1px 1px;
    cursor: pointer;
    /* border-top: 1px solid white; */
    /* border-bottom-right-radius: 5px; */
    border-radius: 3px;
    align-self: flex-end; /* Keeps button at the bottom */
    transition: color 0.3s ease; /* Smooth color transition */

    margin-top: 4px;
    padding-top: 5px;
    font-family: 'Noto Sans Symbols 2', 'Arial', sans-serif;
    line-height: 1.1em;
}

#cv-chat-container .pdf-button.loaded {
    background: var(--cv-chat-button-loaded-color);
  }

#cv-chat-container .send-button:hover,
#cv-chat-container .pdf-button:hover,
#cv-chat-container .reset-button:hover {
    background: var(--cv-chat-button-hover-color);
}

#cv-chat-container .send-button:active,
#cv-chat-container .pdf-button:active,
#cv-chat-container .reset-button:active {
    background: var(--cv-chat-button-active-color);
}

#cv-chat-container .send-button.pulsing {
    animation: pulse 1.0s infinite ease-in-out; /* Apply the pulse animation */
}
  
@keyframes pulse {
    0% {
        color: var(--cv-chat-button-pulse-low-color);
    }
    50% {
        color: var(--cv-chat-button-pulse-high-color);
    }
    100% {
        color: var(--cv-chat-button-pulse-low-color);
    }
}

/*/////////////////////////////////////////////////////////////////////////////
    CV chat tooltip
/////////////////////////////////////////////////////////////////////////////*/


.cv-chat-button-tooltip {
    position: relative;
    display: inline-block;
}

.cv-chat-button-tooltip-text {
    visibility: hidden;
    /* min-width: 80px;
    max-width: 120px; */
    /* width: 120px; */
    /* width: 100%; */
    background-color: var(--cv-chat-fg-color);
    color: var(--cv-chat-bg-color);
    text-align: left;
    /* border-radius: 3px; */
    border-radius: .25em;
    /* padding: 5px 5px; */
    padding: .22em .42em;
    position: absolute;
    z-index: 1;
    /* bottom: 125%; */
    bottom: 12px;
    /* left: 50%; */
    /* margin-left: -60px; */
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
    transition-delay: 0.5s; /* Delay before appearing */
    /* white-space: pre-line; */
    /* font-size: 12px; */
    /* border: .5px solid black; */
    border: .042em solid var(--cv-chat-bg-color);
    font-size: .85rem;
    font-family: var(--font-family-text);

    
    /* Adjust width dynamically */
    display: inline-block; /* Ensures the tooltip expands based on content */
    min-width: max-content; /* Expands to fit longest line */
    max-width: 250px; /* Prevents it from getting too wide */
    word-wrap: break-word; /* Ensures wrapping */
    white-space: normal; /* Allows wrapping on long words */

    
    /* Positioning to the left */
    right: 100%; /* Move it left of the parent element */
    /* top: 50%; */
    /* transform: translateY(-50%) translateX(-10px); */
}

/* .button-tooltip:hover .button-tooltip-text {
    visibility: visible;
    opacity: 1;
} */

.cv-chat-button-tooltip-text.show {
    visibility: visible;
    opacity: 1;
}


/*/////////////////////////////////////////////////////////////////////////////
    CV chat PDF
/////////////////////////////////////////////////////////////////////////////*/



/* Overlay */
#cv-chat-pdf-upload-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: var(--cv-chat-pdf-upload-overlay-color);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

/* Popup Box */
#cv-chat-pdf-upload-popup {
    position: relative;
    background: var(--cv-chat-pdf-upload-bg-color);
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 8px var(--cv-chat-pdf-upload-shadow-color);
    text-align: center;
    cursor: pointer;
    width: 300px;
    height: 150px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    transition: border 0.3s ease-in-out;
}

/* Message Text */
#cv-chat-pdf-upload-message {
    margin: 0;
    font-size: 16px;
    font-family: var(--font-family-text);
    color: var(--cv-chat-pdf-upload-fg-color);
}

/* Hidden File Input */
#cv-chat-pdf-file-input {
    display: none;
}

/* Dragging Effect */
#cv-chat-pdf-upload-popup.dragging {
    /* border: 2px dashed #007bff; */
    border: 2px dashed var(--cv-chat-pdf-upload-dragging-color);
}


/*/////////////////////////////////////////////////////////////////////////////
    footer
/////////////////////////////////////////////////////////////////////////////*/

footer {
    display: flex;
    flex-direction: column;
    justify-content: center;
    /* padding: 20px 0px; */
    padding: 2rem 0px;
    font-size: 0.75rem;
    margin-top: 2rem;
    font-family: var(--font-family-title);
}

footer p {
    /* font-size: 0.8rem; */
    text-align: center;
    /* margin-top: 0.5rem; */
}

.gifs {
    display: flex;
    justify-content: center;

}

.gif {
    width: 150px;
    height: auto;
    margin: 0 10px;
}

footer span {
    
    display: flex;
    flex-direction: row;
    flex: 1;
    /* width: 20em; */
    justify-content:space-between;
    align-items: center;
    gap: 2em;
    margin-top: 0.5rem;
}

footer button {
    /* font-size: 0.8rem; Match the text size of the <p> */
    /* padding: 0.5em 1em; */
    /* line-height: 1; */
    margin: 0; /* Remove default margin */
    width: 10em;
    font-size: 1em;
    background-color: white;
    border: solid 1px grey;
    border-radius: .3em;
    padding: .3em 0em;
    font-family: var(--font-family-title);
}

footer img {
    margin: 0;
    width: 2.5em;
    height: auto;
}


/*/////////////////////////////////////////////////////////////////////////////
    content container
/////////////////////////////////////////////////////////////////////////////*/

.content {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-content: flex-start;
    flex-wrap: wrap;
    flex: 1;
    gap: 12px;
    list-style-type: none;
}


.fade-in {
    opacity: 0;
    transition: opacity 2.5s ease-in-out; /* Smooth fade-in */
}
  
.fade-in.visible {
    opacity: 1; /* Make it visible */
}


/*/////////////////////////////////////////////////////////////////////////////
    links layout
/////////////////////////////////////////////////////////////////////////////*/

/* .links-list {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    flex-wrap: wrap;
    flex: 1;
    gap: 0.8rem;
    width: 50svw;
    width: 50svw;
    list-style-type: none;
    font-size: 0.8rem;
}

.links-list li {
    display: flex;
}

.links-list a {
    display: flex;
    align-items: flex-start;
    padding: 6px 10px;
    color: var(--links-fg-colour);
    text-decoration: none;
    border-radius: 12px;
    background-color: #D3D3D3;
    text-align: center;
}

.links-list a.ent-dev {
    background-color: var(--links-dev-bg-colour);
}

.links-list a.ent-soc {
    background-color: var(--links-soc-bg-colour);
}

.links-list a.ent-pub {
    background-color: var(--links-pub-bg-colour);
}

.links-list a.ent-art {
    background-color: var(--links-art-bg-colour);
}

.links-list a.ent-pro {
    background-color: var(--links-pro-bg-colour);
}

.links-list a.ent-tec {
    background-color: var(--links-tec-bg-colour);
}

.links-list a.ent-oth {
    background-color: var(--links-oth-bg-colour);
}

.links-list a.ent-hov:active,
.links-list a.ent-hov:hover {
    background-color: var(--links-hover-bg-colour);
    color: white;
} */


/*/////////////////////////////////////////////////////////////////////////////
    portfolio layout
/////////////////////////////////////////////////////////////////////////////*/

.portfolio-categories {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: 1rem;
    width: 80vw;
    width: 80svw;
    /* border: red solid 2px; */
    list-style-type: none;
    font-size: 0.9rem;
    max-width: 1100px;
}


.portfolio-category {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    padding-top: 3em;
}

.portfolio-category-title {
    margin: 0;
    display: flex;
    /* border: blue solid 2px; */
    text-align: center;
    padding: 6px 10px;
    color: var(--links-fg-colour);
    text-decoration: none;
    /* border-radius: 12px; */
    /* background-color: #D3D3D3; */
    font-weight: 700;
    gap: 0.8em;
    /* font-size: 1em; */
    font-size: 1.2em;
    font-family: var(--font-family-title);
}


.portfolio-category-links {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    flex-wrap: wrap;
    flex: 1;
    gap: 1.2em;
    padding-top: 1em;
    /* width: 50vw;
    width: 50svw; */
    /* border: red solid 2px; */
    list-style-type: none;
    font-size: 0.8rem;
}

.portfolio-category-links li {
    display: flex;
}


/* .portfolio-category-links a { */
.portfolio-category-link a {
/* .portfolio-category-link { */
     display: flex;
    flex-direction: column;
    justify-content: center;
    /* align-items: center; */
    align-items: flex-start;
    padding: .7em 1em .4em 1em;
    color: var(--links-fg-colour);
    text-decoration: none;
    /* border-radius: 12px; */
    border-radius: 4px;
    /* background-color: #E3E3E3; */
    background-color: var(--portfolio-link-background-color);
    /* text-align: center; */
    text-align: left;
    /* gap: .6em; */
    max-width: fit-content;
}

/* .portfolio-category-link a.disabled {
    cursor: not-allowed;
} */

.portfolio-category-link-art a {
    align-items: center;
}

.portfolio-category-link a.disabled:hover {
    /* background-color: var(--portfolio-link-background-color); */
    background-color: var(--portfolio-link-background-color-disabled);
    cursor: default;
}

/* .portfolio-category-links a:active,
.portfolio-category-links a:hover { */
.portfolio-category-link a:active,
.portfolio-category-link a:hover {
    background-color: var(--portfolio-link-background-color-hover);
    /* color: white; */
}

/* .portfolio-category-links img { */
.portfolio-category-link img {

    
    /* height: 9.4em; */
    height: 9.8em;
    width: auto;
    margin: 0 auto .6em auto;
    border-radius: 0.2em;
}

/* .portfolio-category-links h3 { */
.portfolio-category-link h3 {
    margin: 0 0 .3em 0;
    font-size: 1em;
    font-weight: 600;
    font-family: var(--font-family-title);
}

/* .portfolio-category-links p { */
.portfolio-category-link p {
    margin: 0px;
    font-size: 1em;
    font-weight: 400;
    max-width: 100%;
    word-wrap: break-word;
    font-family: var(--font-family-text);
}

.portfolio-category-link div {
    /* margin: 0 0 .3em 0; */
    margin-top: .8em;
    font-size: 0.9em;
    font-weight: 900;
    font-family: var(--font-family-code);
}

/* .portfolio-category-link-dev a {
    background-color: #F7F7F7;
} */

.portfolio-category-link-pub a,
.portfolio-category-link-gpub a {
    background-color: var(--portfolio-pub-link-background-color);
}

.portfolio-category-link-pub p,
.portfolio-category-link-gpub p {
    margin-top: .2em;
    text-align: left;
}


.portfolio-category-link-tec p {
    text-align: left;
}


.portfolio-category-link-tec h3 {
    text-align: left;
}

.portfolio-category-link-vol p {
    text-align: left;
}