*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }

/*
! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-6{margin-top:1.5rem}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.aspect-square{aspect-ratio:1/1}.h-10{height:2.5rem}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.flex-1{flex:1 1}.shrink-0{flex-shrink:0}.translate-x-4{--tw-translate-x:1rem}.translate-x-4,.translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y:1rem}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.border-2{border-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-cyan-400{--tw-border-opacity:1;border-color:#22d3ee;border-color:rgb(34 211 238/var(--tw-border-opacity,1))}.border-slate-700{--tw-border-opacity:1;border-color:#334155;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.border-slate-800{--tw-border-opacity:1;border-color:#1e293b;border-color:rgb(30 41 59/var(--tw-border-opacity,1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-slate-700{--tw-bg-opacity:1;background-color:#334155;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.bg-slate-800{--tw-bg-opacity:1;background-color:#1e293b;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-900{--tw-bg-opacity:1;background-color:#0f172a;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-slate-900\/95{background-color:#0f172af2}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-slate-900{--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:#0f172a00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-slate-800{--tw-gradient-to:#1e293b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e293b var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-slate-900{--tw-gradient-to:#0f172a var(--tw-gradient-to-position)}.object-contain{object-fit:contain}.p-1{padding:.25rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-20{padding-bottom:5rem;padding-top:5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.leading-relaxed{line-height:1.625}.text-cyan-400{--tw-text-opacity:1;color:#22d3ee;color:rgb(34 211 238/var(--tw-text-opacity,1))}.text-slate-100{--tw-text-opacity:1;color:#f1f5f9;color:rgb(241 245 249/var(--tw-text-opacity,1))}.text-slate-300{--tw-text-opacity:1;color:#cbd5e1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:#94a3b8;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:#64748b;color:rgb(100 116 139/var(--tw-text-opacity,1))}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.hover\:-translate-y-2:hover,.hover\:scale-105:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:transform:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-cyan-400\/10:hover{background-color:#22d3ee1a}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:#1e293b;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.hover\:text-cyan-400:hover{--tw-text-opacity:1;color:#22d3ee;color:rgb(34 211 238/var(--tw-text-opacity,1))}.group:hover .group-hover\:translate-x-2{--tw-translate-x:0.5rem}.group:hover .group-hover\:translate-x-2,.group:hover .group-hover\:translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-y-2{--tw-translate-y:0.5rem}@media (min-width:640px){.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:gap-8{gap:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-4{padding-bottom:1rem;padding-top:1rem}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:overflow-x-visible{overflow-x:visible}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.header-bar{backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%);background:#0f172ab8;border-bottom:1px solid #94a3b814;left:0;position:fixed;right:0;top:0;transition:background .35s ease,box-shadow .35s ease,border-color .35s ease;z-index:100}.header-bar--scrolled{background:#0f172af0;border-color:#22d3ee1f;box-shadow:0 4px 24px #00000073}.header-nav{align-items:center;display:flex;gap:1.5rem;height:64px;justify-content:space-between;margin:0 auto;max-width:72rem;padding:0 1.25rem}@media (min-width:768px){.header-nav{height:68px;padding:0 2rem}}.header-logo-link{align-items:center;display:flex;flex-shrink:0;outline:none;text-decoration:none}.header-logo-link:focus-visible .header-logo-wrapper{outline:2px solid #22d3ee;outline-offset:3px}.header-logo-wrapper{background:#fff;border-radius:10px;box-shadow:0 0 0 1px #94a3b826,0 4px 12px #00000059;height:40px;overflow:hidden;padding:4px;position:relative;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease;width:40px}.header-logo-link:hover .header-logo-wrapper{box-shadow:0 0 0 1px #22d3ee66,0 6px 18px #22d3ee33,0 4px 12px #0006;transform:scale(1.08)}.header-logo-img{border-radius:6px;display:block;height:100%;object-fit:contain;width:100%}@media (min-width:768px){.header-logo-wrapper{height:44px;width:44px}}.header-desktop-links{align-items:center;display:none;gap:.25rem;list-style:none;margin:0;padding:0}@media (min-width:768px){.header-desktop-links{display:flex}}.header-nav-link{align-items:center;border-radius:8px;color:#94a3b8;display:inline-flex;flex-direction:column;font-size:.875rem;font-weight:500;letter-spacing:.02em;padding:.4rem .75rem;position:relative;text-decoration:none;transition:color .2s ease,background .2s ease;white-space:nowrap}.header-nav-link:hover{background:#94a3b812;color:#e2e8f0}.header-nav-link--active{color:#22d3ee}.header-nav-link-indicator{background:linear-gradient(90deg,#22d3ee,#818cf8);border-radius:2px;bottom:4px;height:2px;left:50%;pointer-events:none;position:absolute;transform:translateX(-50%) scaleX(0);transform-origin:center;transition:transform .25s cubic-bezier(.34,1.56,.64,1);width:calc(100% - 1.5rem)}.header-nav-link--active .header-nav-link-indicator,.header-nav-link:hover .header-nav-link-indicator{transform:translateX(-50%) scaleX(1)}.header-hamburger{align-items:center;background:#94a3b814;border:none;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;flex-shrink:0;gap:5px;height:40px;justify-content:center;padding:0;transition:background .2s ease;width:40px}.header-hamburger:hover{background:#22d3ee1f}.header-hamburger:focus-visible{outline:2px solid #22d3ee;outline-offset:2px}@media (min-width:768px){.header-hamburger{display:none}}.hamburger-bar{background:#cbd5e1;border-radius:2px;display:block;height:2px;transform-origin:center;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease,background .2s ease;width:22px}.header-hamburger:hover .hamburger-bar{background:#22d3ee}.header-hamburger--open .hamburger-bar--top{transform:translateY(7px) rotate(45deg)}.header-hamburger--open .hamburger-bar--mid{opacity:0;transform:scaleX(0)}.header-hamburger--open .hamburger-bar--bottom{transform:translateY(-7px) rotate(-45deg)}.mobile-overlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background:#0000008c;inset:0;opacity:0;pointer-events:none;position:fixed;transition:opacity .3s ease;z-index:90}.mobile-overlay--visible{opacity:1;pointer-events:auto}.mobile-menu{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#0f172af7;border-bottom:1px solid #22d3ee1f;left:0;opacity:0;padding:1.25rem 1.5rem 1.75rem;pointer-events:none;position:fixed;right:0;top:64px;transform:translateY(-100%);transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .3s ease;z-index:95}.mobile-menu--open{opacity:1;pointer-events:auto;transform:translateY(0)}.mobile-menu-list{display:flex;flex-direction:column;gap:.25rem;list-style:none;margin:0;padding:0}.mobile-menu-item{opacity:0;transform:translateX(-12px);transition:opacity .3s ease 0ms,transform .3s ease 0ms;transition:opacity .3s ease var(--delay,0ms),transform .3s ease var(--delay,0ms)}.mobile-menu--open .mobile-menu-item{opacity:1;transform:translateX(0)}.mobile-menu-link{align-items:center;border-radius:10px;color:#94a3b8;display:flex;font-size:1rem;font-weight:500;gap:.75rem;letter-spacing:.01em;padding:.85rem 1rem;text-decoration:none;transition:color .2s ease,background .2s ease}.mobile-menu-link:hover{background:#94a3b812;color:#e2e8f0}.mobile-menu-link--active{background:#22d3ee12;color:#22d3ee}.mobile-menu-dot{background:currentColor;border-radius:50%;flex-shrink:0;height:6px;opacity:.5;transition:opacity .2s ease,transform .2s ease;width:6px}.mobile-menu-link--active .mobile-menu-dot,.mobile-menu-link:hover .mobile-menu-dot{opacity:1;transform:scale(1.4)}.header-progress-track{background:#0000;bottom:-1px;height:2px;left:0;overflow:hidden;position:absolute;right:0}.header-progress-fill{background:linear-gradient(90deg,#22d3ee,#818cf8 50%,#c084fc);inset:0;position:absolute;transform:scaleX(0);transform-origin:left center;will-change:transform}.project-card{overflow:hidden;position:relative}.project-card-hint{color:#22d3ee;font-family:ui-monospace,monospace;font-size:.7rem;letter-spacing:.08em;margin-top:14px;opacity:0;text-align:right;transform:translateY(4px);transition:opacity .25s ease,transform .25s ease}.project-card:hover .project-card-hint{opacity:1;transform:translateY(0)}.project-card:hover{box-shadow:0 0 0 1px #22d3ee4d,0 8px 32px #22d3ee14}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(32px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-overlay{align-items:center;animation:modal-fade-in .25s ease forwards;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020814d9;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:1000}.modal-container{animation:modal-slide-up .3s cubic-bezier(.34,1.56,.64,1) forwards;background:#0f172a;border:1px solid #22d3ee2e;border-radius:16px;box-shadow:0 0 0 1px #22d3ee0f,0 24px 80px #0009,0 0 60px #22d3ee0d;display:flex;flex-direction:column;max-height:90vh;max-width:860px;overflow:hidden;position:relative;width:100%}.modal-header{align-items:flex-start;background:linear-gradient(135deg,#22d3ee0a,#0000 60%);border-bottom:1px solid #33415599;display:flex;flex-shrink:0;gap:1rem;justify-content:space-between;padding:1.5rem 1.75rem 1.25rem}.modal-header-left{display:flex;flex-direction:column;gap:4px}.modal-tag{color:#22d3ee;font-family:ui-monospace,monospace;font-size:.65rem;letter-spacing:.15em;opacity:.75;text-transform:uppercase}.modal-title{color:#f1f5f9;font-size:1.5rem;font-weight:700;line-height:1.2}.modal-close-btn{align-items:center;background:#33415566;border:1px solid #33415580;border-radius:8px;color:#94a3b8;cursor:pointer;display:flex;flex-shrink:0;height:36px;justify-content:center;transition:color .2s,background .2s,border-color .2s;width:36px}.modal-close-btn:hover{background:#ef444426;border-color:#ef444466;color:#f1f5f9}.modal-body{display:flex;flex:1 1;flex-direction:column;gap:2rem;overflow-y:auto;padding:1.5rem 1.75rem 2rem;scrollbar-color:#22d3ee4d #0000;scrollbar-width:thin}.modal-body::-webkit-scrollbar{width:5px}.modal-body::-webkit-scrollbar-track{background:#0000}.modal-body::-webkit-scrollbar-thumb{background:#22d3ee4d;border-radius:10px}.modal-body::-webkit-scrollbar-thumb:hover{background:#22d3ee8c}.modal-links{display:flex;flex-wrap:wrap;gap:.75rem}.modal-link-btn{align-items:center;border-radius:8px;display:inline-flex;font-size:.82rem;font-weight:600;gap:6px;letter-spacing:.02em;padding:.45rem 1rem;text-decoration:none;transition:transform .2s,box-shadow .2s}.modal-link-btn:hover{transform:translateY(-2px)}.modal-link-github{background:#33415580;border:1px solid #64748b66;color:#cbd5e1}.modal-link-github:hover{background:#334155cc;box-shadow:0 4px 16px #00000040}.modal-link-external{background:#22d3ee1a;border:1px solid #22d3ee59;color:#22d3ee}.modal-link-external:hover{background:#22d3ee2e;box-shadow:0 4px 16px #22d3ee26}.modal-section{display:flex;flex-direction:column;gap:.75rem}.modal-section-title{align-items:center;border-bottom:1px solid #22d3ee1f;color:#22d3ee;display:flex;font-size:.78rem;font-weight:700;gap:8px;letter-spacing:.12em;padding-bottom:.5rem;text-transform:uppercase}.modal-section-icon{flex-shrink:0;opacity:.85}.modal-tech-badges{display:flex;flex-wrap:wrap;gap:8px}.modal-tech-badge{align-items:center;background:#22d3ee14;border:1px solid #22d3ee38;border-radius:20px;color:#67e8f9;display:inline-flex;font-family:ui-monospace,monospace;font-size:.72rem;font-weight:600;letter-spacing:.04em;padding:4px 12px;transition:background .2s,border-color .2s}.modal-tech-badge:hover{background:#22d3ee26;border-color:#22d3ee66}.modal-description{color:#94a3b8;font-size:.9rem;line-height:1.75}.modal-features-list{display:flex;flex-direction:column;gap:8px;list-style:none;margin:0;padding:0}.modal-feature-item{align-items:flex-start;color:#cbd5e1;display:flex;font-size:.875rem;gap:10px;line-height:1.6}.modal-feature-bullet{background:#22d3ee;border-radius:50%;box-shadow:0 0 6px #22d3ee80;flex-shrink:0;height:6px;margin-top:8px;width:6px}.modal-arch-desc{color:#94a3b8;font-size:.875rem;line-height:1.7}.modal-arch-diagram{border:1px solid #33415599;border-radius:10px;display:flex;flex-direction:column;margin-top:.5rem;overflow:hidden}.modal-arch-row{grid-gap:.5rem;align-items:center;display:grid;gap:.5rem;grid-template-columns:130px 28px 1fr;padding:.7rem 1rem;transition:background .15s}.modal-arch-row:not(:last-child){border-bottom:1px solid #33415580}.modal-arch-row:hover{background:#22d3ee0a}.modal-arch-layer-wrap{align-items:center;display:flex}.modal-arch-layer{background:#22d3ee14;border:1px solid #22d3ee2e;border-radius:6px;color:#22d3ee;font-family:ui-monospace,monospace;font-size:.72rem;font-weight:700;letter-spacing:.05em;padding:3px 8px;white-space:nowrap}.modal-arch-arrow{color:#22d3ee59;font-size:.8rem;text-align:center}.modal-arch-detail{color:#94a3b8;font-size:.82rem;line-height:1.5;margin:0}.modal-screenshot-count{background:#22d3ee14;border:1px solid #22d3ee26;border-radius:20px;color:#22d3ee99;font-family:ui-monospace,monospace;font-size:.65rem;font-weight:600;letter-spacing:.05em;margin-left:auto;padding:2px 8px;text-transform:none}.gallery-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.gallery-thumb{aspect-ratio:16/10;background:#1e293b;border:1px solid #33415580;border-radius:8px;cursor:pointer;overflow:hidden;position:relative;transition:transform .2s,border-color .2s,box-shadow .2s}.gallery-thumb:hover{border-color:#22d3ee73;box-shadow:0 8px 24px #22d3ee1f;transform:translateY(-3px) scale(1.02)}.gallery-thumb-img{display:block;height:100%;object-fit:cover;width:100%}.gallery-thumb-caption{background:linear-gradient(#0000,#020814d9);bottom:0;color:#f1f5f9;font-size:.65rem;left:0;opacity:0;overflow:hidden;padding:4px 8px;position:absolute;right:0;text-overflow:ellipsis;transition:opacity .2s;white-space:nowrap}.gallery-thumb:hover .gallery-thumb-caption{opacity:1}.screenshot-placeholder{align-items:center;display:flex;flex-direction:column;gap:6px;height:100%;justify-content:center;padding:8px;width:100%}.screenshot-placeholder-icon{color:#22d3ee80;flex-shrink:0}.screenshot-placeholder-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#94a3b8;display:-webkit-box;font-size:.7rem;font-weight:600;line-height:1.3;max-width:90%;overflow:hidden;text-align:center}.screenshot-placeholder-label{color:#22d3ee73;font-family:ui-monospace,monospace;font-size:.6rem;letter-spacing:.05em}@keyframes lightbox-in{0%{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}.lightbox-overlay{animation:modal-fade-in .2s ease forwards;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#020610f5;inset:0;padding:1rem;z-index:2000}.lightbox-close,.lightbox-overlay{align-items:center;display:flex;justify-content:center;position:fixed}.lightbox-close{background:#1e293bcc;border:1px solid #33415599;border-radius:10px;color:#94a3b8;cursor:pointer;height:40px;right:1.25rem;top:1.25rem;transition:color .2s,background .2s;width:40px;z-index:2010}.lightbox-close:hover{background:#ef444433;color:#f1f5f9}.lightbox-nav{align-items:center;background:#0f172acc;border:1px solid #33415599;border-radius:50%;color:#94a3b8;cursor:pointer;display:flex;height:46px;justify-content:center;position:fixed;top:50%;transform:translateY(-50%);transition:color .2s,background .2s,border-color .2s;width:46px;z-index:2010}.lightbox-nav:hover{background:#22d3ee1a;border-color:#22d3ee59;color:#22d3ee}.lightbox-prev{left:1rem}.lightbox-next{right:1rem}.lightbox-content{align-items:center;animation:lightbox-in .25s cubic-bezier(.34,1.56,.64,1) forwards;display:flex;flex-direction:column;gap:12px;max-width:min(90vw,900px)}.lightbox-img{box-shadow:0 20px 60px #000000b3;max-height:70vh;max-width:100%;object-fit:contain}.lightbox-img,.lightbox-placeholder{border:1px solid #33415580;border-radius:10px}.lightbox-placeholder{height:min(50vh,360px);overflow:hidden;width:min(80vw,600px)}.lightbox-caption{color:#94a3b8;font-size:.85rem;letter-spacing:.03em;text-align:center}.lightbox-dots{align-items:center;bottom:1.5rem;display:flex;gap:8px;left:50%;position:fixed;transform:translateX(-50%);z-index:2010}.lightbox-dot{background:#94a3b84d;border:none;border-radius:50%;cursor:pointer;height:8px;padding:0;transition:background .2s,transform .2s;width:8px}.lightbox-dot:hover{background:#94a3b899}.lightbox-dot-active{background:#22d3ee;box-shadow:0 0 8px #22d3ee99;transform:scale(1.35)}.lightbox-counter{background:#0f172ab3;border:1px solid #33415566;border-radius:20px;color:#94a3b8b3;font-family:ui-monospace,monospace;font-size:.75rem;left:50%;letter-spacing:.08em;padding:4px 12px;position:fixed;top:1.25rem;transform:translateX(-50%);z-index:2010}@media (max-width:640px){.modal-container{border-radius:12px;max-height:95vh}.modal-header{padding:1.1rem 1.1rem .9rem}.modal-body{gap:1.5rem;padding:1rem 1.1rem 1.5rem}.modal-title{font-size:1.2rem}.modal-arch-row{grid-template-columns:90px 24px 1fr;padding:.6rem .75rem}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.lightbox-prev{left:.25rem}.lightbox-next{right:.25rem}}
/*# sourceMappingURL=main.e6d82bea.css.map*/