@custom-variant dark (&:is(.dark *));:root{--font-size: 14px;--background: #ffffff;--foreground: oklch(.145 0 0);--card: #ffffff;--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: #030213;--primary-foreground: oklch(1 0 0);--secondary: oklch(.95 .0058 264.53);--secondary-foreground: #030213;--muted: #ececf0;--muted-foreground: #717182;--accent: #e9ebef;--accent-foreground: #030213;--destructive: #d4183d;--destructive-foreground: #ffffff;--border: rgba(0, 0, 0, .1);--input: transparent;--input-background: #f3f3f5;--switch-background: #cbced4;--font-weight-medium: 500;--font-weight-normal: 400;--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: #030213;--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(.985 0 0);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--font-weight-medium: 500;--font-weight-normal: 400;--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}@theme inline{ --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-input-background: var(--input-background); --color-switch-background: var(--switch-background); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); }@layer base{*{@apply border-border outline-ring/50;}body{@apply bg-background text-foreground;}}@layer base{:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) p{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}html{font-size:var(--font-size)}.custom-scrollbar::-webkit-scrollbar-thumb{background:#9333ea99;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#9333eacc}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background:linear-gradient(to bottom,#1a2332,#0f1419);background-attachment:fixed;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%}.logo{padding:0;display:flex;align-items:center;justify-content:center;will-change:filter;transition:filter .3s;flex-direction:row}.logo:hover{filter:drop-shadow(0 0 1em #1f78ee99)}.logoGlyph{flex:none;padding-right:.5em;width:4em;height:4em}.logoGlyph img{width:100%;height:100%}.logoText{flex:auto;font-size:2rem}.hidden{display:none}.italic{font-style:italic}.clearfix{clear:both}@media (min-width: 768px){.logo{flex-direction:row;width:auto}.logoGlyph{padding-right:1em;width:6em;height:6em}.logoText{font-size:3rem}.md-visible{display:block}}@media (min-width: 1024px){.logoText{font-size:4rem}.logoGlyph{width:8em;height:8em}}a{font-weight:500;color:#83a5ee;text-decoration:inherit}a:hover{color:#668bda}.slogan{font-size:1.2em;color:#5d99ce;font-style:italic;margin:1em;text-align:center}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;overflow-x:hidden}.main{padding:10px 0}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s;text-align:left}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.cardContainer{display:grid;grid-template-columns:1fr;gap:1.2em}.pageWidthLimiter{max-width:1100px;margin:0 auto;padding:0 1.2em;box-sizing:border-box;width:100%}.card{padding:1rem 1.5rem;background-color:#213547;border-radius:1rem;border:1px solid #3975aa;box-shadow:inset 0 0 0 0 transparent;transition:background-color .7s ease;color:#fff}.card:hover{background-color:#182a3c;box-shadow:inset 0 0 1rem #fff3}.card h2{padding:0;margin:0 0 1rem;font-size:1.5rem}ul{list-style:none;padding:0}ul li{margin-bottom:.5rem;padding-left:1.3rem;position:relative}ul li:before{content:"";position:absolute;left:0;top:.25rem;width:1rem;height:1rem;background-image:url("data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20width='16'%20height='16'%20version='1.1'%20viewBox='0%200%203.233%203.233'%20id='svg1'%20sodipodi:docname='bullet-arrow.svg'%20inkscape:version='1.4.2%20(2aeb623e1d,%202025-05-12)'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:svg='http://www.w3.org/2000/svg'%3e%3cdefs%20id='defs1'%20/%3e%3csodipodi:namedview%20id='namedview1'%20pagecolor='%23ffffff'%20bordercolor='%23000000'%20borderopacity='0.25'%20inkscape:showpageshadow='2'%20inkscape:pageopacity='0.0'%20inkscape:pagecheckerboard='0'%20inkscape:deskcolor='%23d1d1d1'%20showgrid='false'%20inkscape:zoom='27.8125'%20inkscape:cx='8'%20inkscape:cy='8'%20inkscape:window-width='1440'%20inkscape:window-height='831'%20inkscape:window-x='0'%20inkscape:window-y='0'%20inkscape:window-maximized='1'%20inkscape:current-layer='svg1'%20/%3e%3cpath%20d='m3.0289%201.6262c-0.0062067%200.087736-0.61416%200.52851-1.2633%200.89613-0.24056%200.13623-1.2028%200.53259-1.2646%200.48783-0.071047-0.051477%200.76088-1.1053%200.76088-1.3609%200-0.2706-0.85204-1.3386-0.78238-1.3698%200.080104-0.03579%201.3261%200.52704%201.4024%200.5703%200.066376%200.037628%201.1576%200.62641%201.147%200.77641z'%20fill='currentColor'%20stroke='currentColor'%20stroke-width='0'%20id='path1'%20style='fill:%23ffffff;fill-opacity:1'%20/%3e%3c/svg%3e");background-size:contain;background-repeat:no-repeat;color:inherit;fill:currentColor}ul li a{color:#83a5ee;text-decoration:none}ul li a:hover{text-decoration:underline}@media (min-width: 480px){.cardContainer{grid-template-columns:repeat(2,1fr)}}@media (min-width: 768px){.cardContainer{grid-template-columns:repeat(3,1fr)}.slogan{font-size:1.5em;filter:drop-shadow(0 0 .25em #1f78ee99)}}@media (min-width: 1024px){.cardContainer{grid-template-columns:repeat(3,1fr)}.slogan{font-size:1.8em}}:root{--blue-50: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-300: #93c5fd;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--blue-800: #1e40af;--blue-900: #1e3a8a;--slate-50: #f8fafc;--slate-100: #f1f5f9;--slate-200: #e2e8f0;--slate-300: #cbd5e1;--slate-400: #94a3b8;--slate-500: #64748b;--slate-600: #475569;--slate-700: #334155;--slate-800: #1e293b;--slate-900: #0f172a;--pink-400: #f472b6;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--border-radius: .25rem;--border-radius-sm: .125rem;--border-radius-md: .375rem;--border-radius-lg: .5rem;--border-radius-xl: .75rem;--border-radius-2xl: 1rem;--border-radius-3xl: 1.5rem;--border-radius-full: 9999px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.custom-scrollbar::-webkit-scrollbar{width:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#4755694d;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:#2563eb99;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#2563ebcc}.scale-102{transform:scale(1.02)}.fancy{transition:all .3s ease;cursor:pointer}.fancy:hover{transform:translateY(-4px);border-color:#2563eb80;box-shadow:0 10px 25px #2563eb33}.blurb{font-size:.875rem;color:var(--blue-200);line-height:1.6;margin-top:8px}.aboutMeCard,.contactCard,.portfolioCard{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.aboutMeCard h2,.contactCard h2,.portfolioCard h2{margin:0}.app-container{width:100%;max-width:100%;overflow-x:hidden}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000040;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;visibility:hidden;transition:opacity .24s ease,visibility .24s ease}.modal-overlay.open{opacity:1;visibility:visible}.modal-overlay.entering{opacity:0;visibility:visible}.modal-overlay.exiting{opacity:0;visibility:hidden}.modal-content{max-width:900px;max-height:90vh;background:#0f172af2;border:1px solid rgba(37,99,235,.3);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);border-radius:12px;overflow:hidden;position:relative;transform:scale(.95);transition:transform .24s cubic-bezier(.2,.8,.2,1),opacity .24s ease;opacity:0}.modal-overlay.open .modal-content,.modal-content.open{transform:scale(1);opacity:1}.modal-content.entering{transform:scale(.98);opacity:0}.modal-content.exiting{transform:scale(.95);opacity:0}.modal-close{position:absolute;right:16px;top:16px;z-index:50;width:40px;height:40px;border-radius:50%;background:transparent;border:none;color:#fff;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:#fff;background:#2563eb33}.modal-body{overflow-y:auto;max-height:80vh;padding:20px}.modal-header{position:relative;margin-bottom:32px}.modal-header-image{height:256px;position:relative;overflow:hidden;border-radius:8px}.modal-header-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(45deg,#2563eb33,#3b82f633);z-index:10}.modal-header img{width:100%;height:100%;object-fit:cover}.modal-header-content{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(180deg,transparent 0%,var(--slate-900) 100%);padding:24px}.modal-title{font-size:1.875rem;margin-bottom:8px}@media (min-width: 768px){.modal-title{font-size:2.25rem}}.modal-subtitle{color:var(--blue-200);font-size:1.125rem}.modal-content-grid{display:grid;grid-template-columns:1fr;gap:32px;margin-bottom:32px;padding:0 24px}@media (min-width: 1024px){.modal-content-grid{grid-template-columns:2fr 1fr}}.project-overview h3{font-size:1.25rem;color:var(--blue-400);margin-bottom:16px;display:flex;align-items:center;gap:8px}.project-description{color:var(--blue-200);margin-bottom:24px;line-height:1.6}.project-section{margin-bottom:24px}.project-section h4{font-size:1.125rem;color:var(--blue-400);margin-bottom:12px}.project-list{list-style:none;padding:0}.project-list li{color:var(--blue-200);display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.project-list li:before{content:"‣";top:0;color:var(--blue-400);margin-top:0;flex-shrink:0;background-image:none}.project-sidebar{display:flex;flex-direction:column;gap:24px}.project-info-card{background:#1e293b80;border-radius:8px;padding:24px;border:1px solid rgba(37,99,235,.2)}.project-info-card h4{font-size:1.125rem;color:var(--blue-400);margin-bottom:16px;margin-top:0}.project-detail{display:flex;align-items:center;gap:8px;color:var(--blue-200);margin-bottom:12px;font-size:.875rem}.project-detail:last-child{margin-bottom:0}.project-detail svg{color:var(--blue-400);width:16px;height:16px}.project-role{color:var(--blue-200)}.project-role .label{color:var(--blue-400);font-size:.875rem}.project-role .value{font-size:.875rem;margin-left:8px}.tech-tags{display:flex;flex-wrap:wrap;gap:8px}.tech-tag{font-size:.75rem;padding:4px 8px;border:1px solid rgba(37,99,235,.3);color:var(--blue-300);border-radius:4px;background:transparent}.modal-actions{display:flex;flex-direction:column;gap:12px}.modal-btn{width:100%;padding:12px 0;border-radius:6px;border:none;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:500}.modal-btn-primary{background:linear-gradient(45deg,var(--blue-600),var(--blue-600));color:#fff}.modal-btn-primary:hover{background:linear-gradient(45deg,var(--blue-700),var(--blue-700))}.modal-btn-outline{background:transparent;border:1px solid var(--blue-400);color:var(--blue-400)}.modal-btn-outline:hover{background:var(--blue-400);color:#fff}.modal-btn svg{width:16px;height:16px}.modal-gallery{margin-bottom:32px;padding:0 24px}.modal-gallery h3{font-size:1.25rem;color:var(--blue-400);margin-bottom:24px}.gallery-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 768px){.gallery-grid{grid-template-columns:repeat(2,1fr)}}.gallery-item{position:relative;overflow:hidden;transition:transform .3s ease}.gallery-item:hover{transform:scale(1.02)}.gallery-item img{width:100%;height:auto;border-radius:8px;transition:transform .3s ease}.gallery-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 0%,rgba(15,23,42,.8) 100%);opacity:0;transition:opacity .3s ease;display:flex;align-items:flex-end}.gallery-item:hover .gallery-overlay{opacity:1}.gallery-caption{color:#fff;font-size:.875rem;text-align:center}.project-grid,.caseGrid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width: 768px){.project-grid,.caseGrid{grid-template-columns:repeat(2,1fr)}.project-card img,.caseCard img{max-height:200px;object-fit:cover}}@media (min-width: 1100px){.project-grid,.caseGrid{grid-template-columns:repeat(3,1fr)}.project-card img,.caseCard img{max-height:200px;object-fit:cover}}.project-card,.caseCard{display:block;text-decoration:none;color:inherit;border:1px solid #3975aa;border-radius:1rem;padding:1rem;background:#132334;width:100%;transition:all .3s ease}.project-card:hover,.caseCard:hover{border-color:#2563eb80;transform:translateY(-4px)}.project-card img,.caseCard img{width:100%;height:auto;max-height:200px;object-fit:cover;border-radius:.5rem;margin-bottom:.6rem}.project-card-wrap{display:flex;flex-direction:column}.project-thumb{width:100%;height:auto;border-radius:.5rem;object-fit:cover}.project-meta{padding:1rem 0}.project-title{font-size:1.25rem;margin-bottom:.5rem;color:#fff;font-weight:600}.project-desc{font-size:.875rem;color:var(--blue-200);line-height:1.5}.caseHero,.project-hero{overflow-x:hidden}.caseHero img,.project-hero img{width:100%;max-height:420px;object-fit:cover;border-radius:.75rem;margin-top:1.2em;max-width:100%}.caseBody,.project-body{margin-top:1rem;overflow-x:hidden;word-wrap:break-word}.summary{font-size:1.125rem;color:var(--blue-200);line-height:1.6;margin-top:1rem;font-style:italic}figure img{border-radius:.25rem;width:100%;height:auto}figure{width:100%;max-width:200px;margin:1rem 0}figure.large{max-width:400px}figure.left{float:left;margin:0 .8rem .8rem 0}figure.right{float:right;margin:0 0 .8rem .8rem}.fade-in{animation:fadeIn .3s ease-out}.slide-up{animation:slideUp .3s ease-out}.scale-in{animation:scaleIn .3s ease-out}.animate-fade-in{animation:fadeIn .8s ease-out}.animate-slide-up{animation:slideUp .8s ease-out}.animate-scale-in{animation:scaleIn .5s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@media (max-width: 767px){.modal-overlay{padding:8px}.modal-content{max-height:95vh}.modal-body{max-height:85vh}.modal-header-content{padding:16px}.modal-title{font-size:1.5rem}.modal-content-grid,.modal-gallery{padding:0 16px}.project-info-card{padding:16px}}@media (prefers-color-scheme: dark){.modal-overlay{background:#000000e6}.modal-content{background:#0f172afa}}
