@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)}.scale-102{transform:scale(1.02)}: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}}.caseGrid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width: 768px){.caseGrid{grid-template-columns:repeat(2,1fr)}.caseCard img{max-height:200px;object-fit:cover}}@media (min-width: 1100px){.caseGrid{grid-template-columns:repeat(3,1fr)}.caseCard img{max-height:200px;object-fit:cover}}.caseCard{display:block;text-decoration:none;color:inherit;border:1px solid #3975aa;border-radius:1rem;padding:1rem;background:#132334}.caseCard img{width:100%;height:auto;max-height:200px;object-fit:cover;border-radius:.5rem;margin-bottom:.6rem}.caseHero img{width:100%;max-height:420px;object-fit:cover;border-radius:.75rem;margin-top:1.2em}.caseBody{margin-top:1rem;overflow-x:hidden;word-wrap:break-word}.caseHero{overflow-x:hidden}.caseHero img{width:100%;max-height:420px;object-fit:cover;border-radius:.75rem;margin-top:1.2em;max-width:100%}:root{--purple-50: #faf5ff;--purple-100: #f3e8ff;--purple-200: #e9d5ff;--purple-300: #d8b4fe;--purple-400: #c084fc;--purple-500: #a855f7;--purple-600: #9333ea;--purple-700: #7c3aed;--purple-800: #6b21a8;--purple-900: #581c87;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--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-sm: .125rem;--border-radius: .25rem;--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}.portfolio-container{min-height:100vh;background:linear-gradient(135deg,var(--slate-900) 0%,var(--purple-900) 50%,var(--slate-900) 100%);color:#fff;overflow-x:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.hero-section{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;padding:1rem}.hero-background{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.floating-particle{position:absolute;width:4px;height:4px;background:var(--purple-400);border-radius:var(--border-radius-full);animation:float-particle 5s infinite ease-in-out}@keyframes float-particle{0%,to{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1)}}.hero-content{text-align:center;z-index:10;max-width:1152px;margin:0 auto}.hero-logo{width:128px;height:128px;margin:0 auto 24px;position:relative}.hero-logo-glow{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(45deg,var(--purple-500),var(--blue-500));border-radius:var(--border-radius-full);filter:blur(40px);opacity:.5;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:.8}}.hero-logo img{position:relative;z-index:10;width:100%;height:100%;object-fit:contain}.hero-title{font-size:3.75rem;margin-bottom:16px;background:linear-gradient(45deg,var(--purple-400),var(--pink-400),var(--blue-400));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-weight:700;line-height:1}@media (min-width: 768px){.hero-title{font-size:6rem}}.hero-subtitle{font-size:1.5rem;margin-bottom:24px;color:var(--purple-200)}@media (min-width: 768px){.hero-subtitle{font-size:2.25rem}}.hero-tagline{font-size:1.25rem;margin-bottom:48px;color:var(--blue-300);font-style:italic}@media (min-width: 768px){.hero-tagline{font-size:1.5rem}}.hero-buttons{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--border-radius-full);padding:16px 32px;font-size:1.125rem;font-weight:500;text-decoration:none;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden}.btn:hover{transform:scale(1.05)}.btn-primary{background:linear-gradient(45deg,var(--purple-600),var(--blue-600));color:#fff;box-shadow:var(--shadow-lg)}.btn-primary:hover{background:linear-gradient(45deg,var(--purple-700),var(--blue-700));box-shadow:0 20px 25px -5px #9333ea40}.btn-outline{background:transparent;color:var(--purple-400);border:1px solid var(--purple-400)}.btn-outline:hover{background:var(--purple-400);color:#fff}.gallery-section{padding:80px 16px}.gallery-container{max-width:1280px;margin:0 auto}.gallery-title{font-size:2.25rem;text-align:center;margin-bottom:16px;background:linear-gradient(45deg,var(--purple-400),var(--blue-400));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}@media (min-width: 768px){.gallery-title{font-size:3.75rem}}.gallery-subtitle{text-align:center;color:var(--purple-200);margin-bottom:48px;font-size:1.125rem}.tag-filter{margin-bottom:48px}.tag-list{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:24px}.tag-badge{padding:8px 16px;font-size:.875rem;border-radius:var(--border-radius-lg);cursor:pointer;transition:all .3s ease;border:1px solid var(--purple-400);background:transparent;color:var(--purple-400)}.tag-badge:hover{background:var(--purple-400);color:#fff;transform:scale(1.05)}.tag-badge.selected{background:#6b21a899;border:2px solid var(--purple-300);color:var(--purple-100);box-shadow:0 4px 6px #9333ea33;transform:scale(1.02)}.clear-filters{text-align:center}.clear-filters button{background:transparent;color:var(--purple-400);border:none;cursor:pointer;padding:8px 16px;border-radius:var(--border-radius);transition:all .3s ease}.clear-filters button:hover{color:#fff;background:#9333ea33}.portfolio-grid{display:grid;grid-template-columns:1fr;gap:32px}@media (min-width: 768px){.portfolio-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.portfolio-grid{grid-template-columns:repeat(3,1fr)}}.portfolio-item{transition:all .3s ease}.portfolio-item:hover{transform:translateY(-10px) scale(1.02)}.portfolio-card{background:#1e293b80;border:1px solid rgba(147,51,234,.2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--border-radius-lg);overflow:hidden;transition:all .3s ease}.portfolio-card:hover{border-color:#9333ea80;box-shadow:0 20px 25px -5px #9333ea1a}.portfolio-image-container{position:relative;overflow:hidden;height:192px}.portfolio-image{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.portfolio-card:hover .portfolio-image{transform:scale(1.1)}.portfolio-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}.portfolio-card:hover .portfolio-overlay{opacity:1}.portfolio-overlay-buttons{padding:16px;display:flex;gap:8px}.overlay-btn{padding:8px;border-radius:var(--border-radius);border:none;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center}.overlay-btn-info{background:#fff3;color:#fff}.overlay-btn-info:hover{background:#ffffff4d}.overlay-btn-view{background:#9333eacc;color:#fff}.overlay-btn-view:hover{background:var(--purple-600)}.overlay-btn-source{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.overlay-btn-source:hover{background:#fff3}.portfolio-content{padding:24px}.portfolio-title{font-size:1.25rem;margin-bottom:8px;color:#fff;transition:color .3s ease;cursor:pointer}.portfolio-card:hover .portfolio-title{color:var(--purple-400)}.portfolio-description{color:var(--purple-200);margin-bottom:16px;font-size:.875rem;line-height:1.6}.portfolio-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.portfolio-tag{font-size:.75rem;padding:4px 8px;border:1px solid rgba(147,51,234,.3);color:var(--purple-300);border-radius:var(--border-radius);transition:all .3s ease}.portfolio-tag:hover{border-color:var(--purple-400);color:var(--purple-200)}.portfolio-actions{display:flex;gap:8px}.portfolio-btn{flex:1;padding:8px 12px;font-size:.75rem;border-radius:var(--border-radius);border:none;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:4px;text-decoration:none}.portfolio-btn-details{background:transparent;border:1px solid rgba(147,51,234,.5);color:var(--purple-400)}.portfolio-btn-details:hover{background:var(--purple-400);color:#fff}.portfolio-btn-view{background:linear-gradient(45deg,var(--purple-600),var(--blue-600));color:#fff}.portfolio-btn-view:hover{background:linear-gradient(45deg,var(--purple-700),var(--blue-700))}.contact-section{padding:80px 16px}.contact-container{max-width:896px;margin:0 auto;text-align:center}.contact-title{font-size:2.25rem;margin-bottom:32px;background:linear-gradient(45deg,var(--purple-400),var(--blue-400));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}@media (min-width: 768px){.contact-title{font-size:3.75rem}}.contact-grid{display:grid;grid-template-columns:1fr;gap:32px}@media (min-width: 768px){.contact-grid{grid-template-columns:repeat(3,1fr)}}.contact-card{background:#1e293b80;border:1px solid rgba(147,51,234,.2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--border-radius-lg);padding:24px;transition:all .3s ease}.contact-card:hover{border-color:#9333ea80}.contact-card h3{font-size:1.25rem;margin-bottom:16px;color:var(--purple-400)}.contact-links{display:flex;flex-direction:column;gap:8px}.contact-link{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--purple-200);text-decoration:none;transition:color .3s ease;padding:4px}.contact-link:hover{color:var(--purple-400)}.floating-nav{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:50;display:none}@media (min-width: 1024px){.floating-nav{display:block}}.floating-nav-container{background:#1e293bcc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--border-radius-full);padding:12px;border:1px solid rgba(147,51,234,.2)}.nav-button{width:48px;height:48px;border-radius:var(--border-radius-full);margin-bottom:12px;border:none;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--purple-400)}.nav-button:last-child{margin-bottom:0}.nav-button:hover{color:#fff;background:#9333ea80;transform:scale(1.05)}.nav-button.active{background:var(--purple-600);color:#fff;box-shadow:0 10px 15px #9333ea40}.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}@media (max-width: 767px){.hero-buttons{flex-direction:column;align-items:center}.btn{width:100%;max-width:280px}}.custom-scrollbar::-webkit-scrollbar{width:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#4755694d;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:#9333ea99;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#9333eacc}.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 slideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.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(147,51,234,.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:#9333ea33}.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,#9333ea33,#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(--purple-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(--purple-400);margin-bottom:16px;display:flex;align-items:center;gap:8px}.project-description{color:var(--purple-200);margin-bottom:24px;line-height:1.6}.project-section{margin-bottom:24px}.project-section h4{font-size:1.125rem;color:var(--purple-400);margin-bottom:12px}.project-list{list-style:none;padding:0}.project-list li{color:var(--purple-200);display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.project-list li:before{content:"‣";top:0;color:var(--purple-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(147,51,234,.2)}.project-info-card h4{font-size:1.125rem;color:var(--purple-400);margin-bottom:16px;margin-top:0}.project-detail{display:flex;align-items:center;gap:8px;color:var(--purple-200);margin-bottom:12px;font-size:.875rem}.project-detail:last-child{margin-bottom:0}.project-detail svg{color:var(--purple-400);width:16px;height:16px}.project-role{color:var(--purple-200)}.project-role .label{color:var(--purple-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(147,51,234,.3);color:var(--purple-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(--purple-600),var(--blue-600));color:#fff}.modal-btn-primary:hover{background:linear-gradient(45deg,var(--purple-700),var(--blue-700))}.modal-btn-outline{background:transparent;border:1px solid var(--purple-400);color:var(--purple-400)}.modal-btn-outline:hover{background:var(--purple-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(--purple-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}@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}}.fade-in{animation:fadeIn .3s ease-out}.slide-up{animation:slideUp .3s ease-out}.scale-in{animation:scaleIn .3s 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)}}.project-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width: 768px){.project-grid{grid-template-columns:repeat(2,1fr)}.project-card img{max-height:200px;object-fit:cover}}@media (min-width: 1100px){.project-grid{grid-template-columns:repeat(3,1fr)}.project-card img{max-height:200px;object-fit:cover}}.project-card{display:block;text-decoration:none;width:100%;color:inherit;border:1px solid #3975aa;border-radius:1rem;padding:1rem;background:#132334}.project-card img{width:100%;height:auto;max-height:200px;object-fit:cover;border-radius:.5rem;margin-bottom:.6rem}.project-hero img{width:100%;max-height:420px;object-fit:cover;border-radius:.75rem;margin-top:1.2em}.project-body{margin-top:1rem;overflow-x:hidden;word-wrap:break-word}figure img{border-radius:.25rem;width:100%;height:auto}figure{width:100%;max-width:200px}figure.large{max-width:400px}figure.left{float:left;margin:0 .8rem .8rem 0}figure.right{float:right;margin:0 0 .8rem .8rem}
