body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}body,html{background-color:#000}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}html{height:100%}body{margin:0;min-height:100%;padding:0}a{text-decoration:none}#root,.App{display:flex;flex-direction:column;min-height:100vh}.App{background-color:#000}.App-header{flex-shrink:0}.home-container{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;gap:2rem;height:calc(100vh - 80px);justify-content:center;overflow:hidden;padding:1.5rem 2.5rem;width:100vw}.home-grid{grid-gap:2rem;display:grid;flex:1 1;gap:2rem;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);max-width:1400px;min-height:0;width:100%}.home-image-wrapper{animation:fadeInUp .6s ease-out backwards;overflow:hidden;position:relative;transition:transform .4s cubic-bezier(.4,0,.2,1),box-shadow .4s ease}.home-image{display:block;height:100%;object-fit:cover;width:100%}.home-image-overlay{align-items:center;background-color:#00000080;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity .3s ease;width:100%}.home-image-wrapper:hover .home-image-overlay{opacity:1}.home-image-description{color:#fff;font-size:1rem;font-weight:600;letter-spacing:.02em;padding:1rem;text-align:center;white-space:pre-line}.home-social-links{animation:fadeInUp .6s ease-out backwards;animation-delay:.1s;flex-shrink:0;gap:1rem}.home-social-links,.social-link{align-items:center;display:flex;justify-content:center}.social-link{transition:transform .2s ease,opacity .2s ease}.social-icon{height:26px;object-fit:contain;width:26px}@media (max-width:1024px){.home-container{gap:.75rem;padding:1.25rem 2rem}.home-grid{gap:1.5rem}.home-image-description{font-size:1.25rem}.social-icon{height:28px;width:28px}}@media (max-width:768px){.home-container{gap:.75rem;height:calc(100vh - 120px);padding:1rem 1.5rem}.home-grid{gap:1rem;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr)}.home-image-wrapper:hover{transform:scale(1.02)}.home-image-description{font-size:1rem}.home-social-links{gap:1.25rem}.social-icon{height:26px;width:26px}}@media (max-width:480px){.home-container{gap:.5rem;height:calc(100vh - 140px);padding:.75rem 1rem}.home-grid{gap:.75rem}.home-image-description{font-size:.9rem;padding:.5rem}.home-social-links{gap:1rem}.social-icon{height:24px;width:24px}}@media (max-width:768px) and (orientation:landscape){.home-container{gap:.5rem;height:calc(100vh - 80px);padding:.5rem 1rem}.home-grid{gap:.75rem;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr)}.social-icon{height:20px;width:20px}}@media (max-width:480px) and (min-height:800px){.home-container{gap:.75rem}.home-grid{gap:1rem}}.work-page{margin:0 auto;max-width:1000px;min-height:calc(100vh - 80px);padding:3rem 2rem}.work-header{animation:fadeInUp .6s ease-out backwards;margin-bottom:4rem;text-align:center}.work-header h1{color:#f7fafc;font-size:clamp(2.5rem,6vw,4rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.work-header p{color:#a0aec0;font-size:1.25rem}.experiences-list{display:flex;flex-direction:column;gap:2rem}.experience-link{animation:fadeInUp .6s ease-out backwards;color:inherit;text-decoration:none}.experience-link:first-child{animation-delay:.1s}.experience-link:nth-child(2){animation-delay:.2s}.experience-link:nth-child(3){animation-delay:.3s}.experience-link:nth-child(4){animation-delay:.4s}.experience-link:nth-child(5){animation-delay:.5s}.experience-card{align-items:stretch;border:2px solid #4c515a80;border-radius:16px;display:flex;gap:3rem;min-height:200px;padding:2.5rem;transition:all .3s ease}.experience-link:hover .experience-card{border:2px solid #4c515a;box-shadow:0 8px 30px #0000004d}.experience-left{align-items:center;display:flex;flex-direction:column;flex-shrink:0;gap:1rem;margin-left:50px;margin-right:50px;width:180px}.experience-logo{object-fit:cover}.experience-logo,.experience-logo-placeholder{border-radius:24px;box-shadow:0 4px 16px #0003;height:120px;width:120px}.experience-logo-placeholder{align-items:center;background:linear-gradient(135deg,#2d3748,#1a202c);color:#a0aec0;display:flex;font-size:3rem;font-weight:700;justify-content:center}.experience-company{color:#f7fafc;font-size:1.5rem;font-weight:700;margin:0;text-align:center}.experience-location{color:#a0aec0;font-size:.95rem;margin:0;text-align:center}.experience-right{display:flex;flex:1 1;flex-direction:column;justify-content:flex-start;margin-left:5rem;position:relative}.experience-role{color:#f7fafc;font-size:1.5rem;font-weight:600;margin:0 0 .5rem}.experience-dates{color:#a0aec0;font-size:1rem;font-style:italic;margin:0 0 1rem}.experience-description{color:#cbd5e0;flex-grow:1;font-size:1.125rem;line-height:1.7;margin:0 0 1rem}.experience-technologies{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.tech-tag{background:#a0aec01a;border:1px solid #a0aec04d;border-radius:9999px;color:#a0aec0;font-size:.875rem;font-weight:500;padding:.25rem .75rem;transition:all .2s}.tech-tag:hover{background:#a0aec033;border-color:#a0aec080;color:#e2e8f0}.experience-link:hover .view-more-label{color:#cbd5e0cc}@media (max-width:900px){.experience-card{gap:2rem;padding:2rem}.experience-left{margin-left:0;margin-right:0;min-width:140px}.experience-logo,.experience-logo-placeholder{height:100px;width:100px}.experience-logo-placeholder{font-size:2.5rem}.experience-company{font-size:1.25rem}.experience-right{margin-left:0}.experience-role{font-size:1.25rem}.experience-description{font-size:1rem}}@media (max-width:768px){.work-page{padding:2rem 1rem}.work-header{margin-bottom:2rem}.experiences-list{gap:1.5rem}.experience-card{align-items:center;flex-direction:column;gap:1.5rem;padding:1.75rem}.experience-left{align-items:center;width:100%}.experience-right{margin:0;text-align:center;width:100%}.experience-technologies{justify-content:center}.view-more-label{align-self:center}}@media (max-width:480px){.experience-card{padding:1.5rem}.experience-logo,.experience-logo-placeholder{height:80px;width:80px}.experience-logo-placeholder{font-size:2rem}.experience-company,.experience-role{font-size:1.125rem}.experience-description{font-size:.95rem}.tech-tag{font-size:.8rem;padding:.2rem .6rem}.view-more-label{font-size:.9rem}}.projects-page{margin:0 auto;max-width:1000px;min-height:calc(100vh - 80px);padding:3rem 2rem}.projects-header{animation:fadeInUp .6s ease-out backwards;margin-bottom:4rem;text-align:center}.projects-header h1{color:#f7fafc;font-size:clamp(2.5rem,6vw,4rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.projects-header p{color:#a0aec0;font-size:1.25rem}.projects-list{display:flex;flex-direction:column;gap:2rem}.project-link{animation:fadeInUp .6s ease-out backwards;color:inherit;text-decoration:none}.project-link:first-child{animation-delay:.1s}.project-link:nth-child(2){animation-delay:.2s}.project-link:nth-child(3){animation-delay:.3s}.project-link:nth-child(4){animation-delay:.4s}.project-link:nth-child(5){animation-delay:.5s}.project-row{align-items:stretch;border:2px solid #4c515a80;border-radius:16px;display:flex;gap:3rem;min-height:200px;padding:2.5rem;transition:all .3s ease}.project-link:hover .project-row{border:2px solid #4c515a;box-shadow:0 8px 30px #0000004d}.project-left{align-items:center;display:flex;flex-direction:column;flex-shrink:0;gap:1rem;margin-left:50px;margin-right:50px;width:180px}.project-icon{border-radius:24px;box-shadow:0 4px 16px #0003;height:120px;object-fit:cover;width:120px}.project-name{color:#f7fafc;font-size:1.5rem;font-weight:700;margin:0;text-align:center}.project-right{display:flex;flex:1 1;flex-direction:column;justify-content:space-between;margin-left:5rem;position:relative}.project-description{color:#cbd5e0;flex-grow:1;font-size:1.25rem;line-height:1.7;margin:0}.view-more-label{align-self:flex-end;color:#cbd5e080;font-size:1rem;font-weight:500;margin:0;transition:all .2s}.project-link:hover .view-more-label{color:#cbd5e0cc}.project-meta{align-items:center;display:flex;flex-wrap:wrap;gap:2rem;justify-content:center}.project-languages{align-items:center;display:flex;gap:.75rem}.language-icon{border-radius:8px;height:40px;transition:all .2s;width:40px}@media (max-width:900px){.project-row{gap:2rem;padding:2rem}.project-left{min-width:140px}.project-icon{height:100px;width:100px}.project-description,.project-name{font-size:1.25rem}}@media (max-width:768px){.projects-page{padding:2rem 1rem}.projects-header{margin-bottom:2rem}.projects-list{gap:1.5rem}.project-row{align-items:center;flex-direction:column;gap:1.5rem;padding:1.75rem}.project-left{align-items:center;width:100%}.project-right{margin:0;text-align:center;width:100%}.view-more-label{align-self:center}.project-meta{align-items:center;flex-direction:column;gap:1rem}.project-languages{justify-content:center}}@media (max-width:480px){.project-row{padding:1.5rem}.project-icon{height:80px;width:80px}.project-name{font-size:1.125rem}.project-description{font-size:.95rem}.language-icon{height:36px;width:36px}.view-more-label{font-size:.9rem}}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_AMS-Regular.73ea273a72f4aca30ca5.woff2) format("woff2"),url(/static/media/KaTeX_AMS-Regular.d562e886c52f12660a41.woff) format("woff"),url(/static/media/KaTeX_AMS-Regular.853be92419a6c3766b9a.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/static/media/KaTeX_Caligraphic-Bold.a1abf90dfd72792a577a.woff2) format("woff2"),url(/static/media/KaTeX_Caligraphic-Bold.d757c535a2e5902f1325.woff) format("woff"),url(/static/media/KaTeX_Caligraphic-Bold.7489a2fbfb9bfe704420.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Caligraphic-Regular.d6484fce1ef428d5bd94.woff2) format("woff2"),url(/static/media/KaTeX_Caligraphic-Regular.db074fa22cf224af93d7.woff) format("woff"),url(/static/media/KaTeX_Caligraphic-Regular.7e873d3833eb108a0758.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/static/media/KaTeX_Fraktur-Bold.931d67ea207ab37ee693.woff2) format("woff2"),url(/static/media/KaTeX_Fraktur-Bold.354501bac435c3264834.woff) format("woff"),url(/static/media/KaTeX_Fraktur-Bold.4c761b3711973ab04edf.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Fraktur-Regular.172d3529b26f8cedef6b.woff2) format("woff2"),url(/static/media/KaTeX_Fraktur-Regular.6fdf0ac577be0ba82a4c.woff) format("woff"),url(/static/media/KaTeX_Fraktur-Regular.ed305b5434865e06ffde.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/static/media/KaTeX_Main-Bold.39890742bc957b368704.woff2) format("woff2"),url(/static/media/KaTeX_Main-Bold.0c3b8929d377c0e9b2f3.woff) format("woff"),url(/static/media/KaTeX_Main-Bold.8169508bf58f8bd92ad8.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/static/media/KaTeX_Main-BoldItalic.20f389c4120be058d80a.woff2) format("woff2"),url(/static/media/KaTeX_Main-BoldItalic.428978dc7837d46de091.woff) format("woff"),url(/static/media/KaTeX_Main-BoldItalic.828abcb200061cffbaae.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/static/media/KaTeX_Main-Italic.fe2176f79edaa716e621.woff2) format("woff2"),url(/static/media/KaTeX_Main-Italic.fd947498bc16392e76c2.woff) format("woff"),url(/static/media/KaTeX_Main-Italic.fa675e5e4bec9eb250b6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Main-Regular.f650f111a3b890d116f1.woff2) format("woff2"),url(/static/media/KaTeX_Main-Regular.4f35fbcc9ee8614c2bcc.woff) format("woff"),url(/static/media/KaTeX_Main-Regular.9eba1d77abcf2aa6e94e.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/static/media/KaTeX_Math-BoldItalic.dcbcbd93bac0470b462d.woff2) format("woff2"),url(/static/media/KaTeX_Math-BoldItalic.3f07ed67f06c720120ce.woff) format("woff"),url(/static/media/KaTeX_Math-BoldItalic.bf2d440b3a42ea78a998.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/static/media/KaTeX_Math-Italic.6d3d25f4820d0da8f01f.woff2) format("woff2"),url(/static/media/KaTeX_Math-Italic.96759856b4e70f3a8338.woff) format("woff"),url(/static/media/KaTeX_Math-Italic.8a5f936332e8028c7278.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(/static/media/KaTeX_SansSerif-Bold.95591a929f0d32aa282a.woff2) format("woff2"),url(/static/media/KaTeX_SansSerif-Bold.b9cd458ac6d5889ff9c3.woff) format("woff"),url(/static/media/KaTeX_SansSerif-Bold.5b49f4993ae22d7975b4.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(/static/media/KaTeX_SansSerif-Italic.7d393d382f3e7fb1c637.woff2) format("woff2"),url(/static/media/KaTeX_SansSerif-Italic.8d593cfaa96238d5e2f8.woff) format("woff"),url(/static/media/KaTeX_SansSerif-Italic.b257a18c016f37ee4543.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(/static/media/KaTeX_SansSerif-Regular.cd5e231e0cc53b2cb2c0.woff2) format("woff2"),url(/static/media/KaTeX_SansSerif-Regular.02271ec5cb9f5b4588ac.woff) format("woff"),url(/static/media/KaTeX_SansSerif-Regular.2f7bc363fc5424ebda59.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Script-Regular.c81d1b2a4b75d3eded60.woff2) format("woff2"),url(/static/media/KaTeX_Script-Regular.073b3402d036714b4370.woff) format("woff"),url(/static/media/KaTeX_Script-Regular.fc9ba5249878cd8f8d88.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Size1-Regular.6eec866c69313624be60.woff2) format("woff2"),url(/static/media/KaTeX_Size1-Regular.0108e89c9003e8c14ea3.woff) format("woff"),url(/static/media/KaTeX_Size1-Regular.6de7d4b539221a49e9e2.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Size2-Regular.2960900c4f271311eb36.woff2) format("woff2"),url(/static/media/KaTeX_Size2-Regular.3a99e70aee4076660d38.woff) format("woff"),url(/static/media/KaTeX_Size2-Regular.57f5c1837853986ea1db.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Size3-Regular.e1951519f6f0596f7356.woff2) format("woff2"),url(/static/media/KaTeX_Size3-Regular.7947224e8a9914fa332b.woff) format("woff"),url(/static/media/KaTeX_Size3-Regular.8d6b6822586eea3d3b20.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Size4-Regular.e418bf257af1052628d8.woff2) format("woff2"),url(/static/media/KaTeX_Size4-Regular.aeffd8025cba3647f1a6.woff) format("woff"),url(/static/media/KaTeX_Size4-Regular.4ad7c7e8bb8d10a34bb7.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/static/media/KaTeX_Typewriter-Regular.c295e7f71970f03c0549.woff2) format("woff2"),url(/static/media/KaTeX_Typewriter-Regular.4c6b94fd1d07f8beff7c.woff) format("woff"),url(/static/media/KaTeX_Typewriter-Regular.c5c02d763c89380dcb4e.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.27"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.footer-container{position:relative}.visible-footer{text-align:center}.contact-info{color:#e2e8f0;margin-bottom:1rem}.contact-email{color:#e2e8f0;text-decoration:underline;transition:color .2s}.contact-email:hover{color:#b8b8b8;text-decoration:underline}.privacy-policy-button{background:none;border:none;color:#e2e8f0;cursor:pointer;font-size:1rem;margin-top:.5rem;padding:.5rem 1rem;text-decoration:underline;transition:color .2s}.privacy-policy-button:hover{color:#b8b8b8}.policy-overlay{animation:fadeIn .3s ease-out;background-color:#000000b3;top:0;z-index:1000}.policy-modal,.policy-overlay{bottom:0;left:0;position:fixed;right:0}.policy-modal{animation:slideUp .3s cubic-bezier(.4,0,.2,1);background:#fff;border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #0000004d;max-height:70vh;overflow-y:auto;z-index:1001}.policy-modal-header{align-items:center;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:1.5rem 2rem;position:-webkit-sticky;position:sticky;top:0;z-index:1}.policy-modal-title{color:#1a202c;font-size:1.5rem;font-weight:700;margin:0}.policy-close-button{align-items:center;background:none;border:none;border-radius:8px;color:#718096;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:all .2s}.policy-close-button:hover{background-color:#f7fafc;color:#1a202c}.policy-close-button:active{transform:scale(.95)}.policy-modal-content{color:#4a5568;font-size:1rem;line-height:1.7;padding:2rem}.policy-modal-content p{margin:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (max-width:768px){.policy-modal{max-height:80vh}.policy-modal-header{padding:1.25rem 1.5rem}.policy-modal-title{font-size:1.25rem}.policy-modal-content{font-size:.95rem;padding:1.5rem}}@media (max-width:480px){.policy-modal{max-height:85vh}.policy-modal-content,.policy-modal-header{padding:1rem}}.policy-close-button:focus-visible{outline:2px solid #a0aec0;outline-offset:2px}.privacy-policy-button:focus-visible{outline:2px solid #a0aec0;outline-offset:2px}.template-project-container{margin:0 auto;max-width:100%;min-height:calc(100vh - 80px);overflow-x:hidden;padding:3rem 2rem}.template-project-header{animation:fadeInUp .6s ease-out backwards;animation-delay:.1s;margin-bottom:0;text-align:center}.template-project-logo{border-radius:36px;box-shadow:0 4px 20px #0000001a;height:auto;margin-bottom:1.5rem;transition:transform .3s ease;width:10rem}.template-project-name{color:#f7fafc;font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:1.5rem 0}.template-project-languages{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.5rem}.template-language-img{border-radius:12px;box-shadow:0 2px 8px #0000001a;height:48px;margin:8px;transition:all .3s ease;width:48px}.template-github-ref{align-items:center;animation:fadeInUp .6s ease-out backwards;animation-delay:.2s;display:inline-flex;justify-content:center;margin:2rem auto;padding:0;text-decoration:none;transition:all .3s ease}.template-github-img{border-radius:8px;box-shadow:0 2px 12px #00000026;height:auto;transition:all .3s ease;width:160px}.template-github-ref:hover .template-github-img{box-shadow:0 6px 20px #0003;transform:translateY(-2px)}.template-project-description{animation:fadeInUp .6s ease-out backwards;animation-delay:.3s;border-radius:16px;color:#e2e8f0;font-size:1.125rem;line-height:1.8;margin:0 auto;max-width:800px;text-align:left}.template-project-description h2{border-bottom:1px solid #2d3748;color:#f7fafc;font-size:1.75rem;font-weight:700;line-height:1.3;margin:2.5rem 0 1rem;padding-bottom:.5rem}.template-project-description h3{color:#f7fafc;font-size:1.375rem;font-weight:600;margin:2rem 0 .75rem}.template-project-description h4{color:#f7fafc;font-size:1.125rem;font-weight:600;margin:1.5rem 0 .5rem}.template-project-description p{color:#cbd5e0;margin-bottom:1.25rem}.template-project-description strong{color:#f7fafc;font-weight:600}.template-project-description em{color:#cbd5e0;font-style:italic}.template-project-description a{border-bottom:1px solid #a0aec04d;color:#a0aec0;text-decoration:none;transition:all .2s}.template-project-description a:hover{border-bottom-color:#e2e8f0;color:#e2e8f0}.template-project-description .reference-link{border-bottom:none!important;color:#a0aec0;font-size:.85em;font-weight:600;padding:0 .2em;text-decoration:none;vertical-align:super}.template-project-description .reference-link:hover{color:#e2e8f0;text-decoration:underline}.template-project-description ol,.template-project-description ul{color:#cbd5e0;margin:1.25rem 0;padding-left:1.5rem}.template-project-description li{line-height:1.7;margin-bottom:.5rem}.template-project-description li::marker{color:#a0aec0}.template-project-description ol ol,.template-project-description ol ul,.template-project-description ul ol,.template-project-description ul ul{margin:.5rem 0}.template-project-description .inline-code,.template-project-description code{background:#2d3748;border-radius:4px;color:#a0aec0;font-family:Monaco,Menlo,Courier New,monospace;font-size:.9em;padding:.2em .4em}.template-project-description .code-block,.template-project-description pre{background:#0c0d10;border:1px solid #2d3748;border-radius:8px;margin:1rem 0;overflow-x:auto;padding:1rem 1.5rem}.template-project-description .code-block code,.template-project-description pre code{background:none;color:#e2e8f0;font-size:.875rem;line-height:1.6;padding:0}.template-project-description blockquote{background:#7180960d;border-left:4px solid #718096;border-radius:0 8px 8px 0;color:#a0aec0;font-style:italic;margin:1.5rem 0;padding:.5rem 0 .5rem 1.5rem}.template-project-description blockquote p{margin-bottom:0}.template-project-description table{border-collapse:collapse;font-size:.95rem;margin:1.5rem 0;width:100%}.template-project-description td,.template-project-description th{border-bottom:1px solid #2d3748;padding:.75rem 1rem;text-align:left}.template-project-description th{background:#1a1d24;color:#f7fafc;font-weight:600}.template-project-description tr:hover{background:#7180960d}.template-project-description hr{border:none;border-top:1px solid #2d3748;margin:2.5rem 0}.template-project-description .markdown-image{border-radius:8px;box-shadow:0 4px 16px #0003;height:auto;margin:1.5rem 0;max-width:100%}.template-project-description input[type=checkbox]{accent-color:#718096;margin-right:.5rem}.template-project-description dl{margin:1.25rem 0}.template-project-description dt{color:#f7fafc;font-weight:600;margin-top:1rem}.template-project-description dd{color:#cbd5e0;margin-left:1.5rem}.template-project-description [id]{scroll-margin-top:100px}.template-app-screenshot-container{-webkit-overflow-scrolling:touch;animation:fadeInUp .6s ease-out backwards;animation-delay:.4s;display:flex;gap:1.5rem;justify-content:safe center;margin:4rem 0;overflow-x:auto;overflow-y:hidden;padding:2rem 1rem;scroll-behavior:smooth;scroll-snap-type:x mandatory}.template-app-screenshot{border-radius:12px;box-shadow:0 8px 30px #0000001f;cursor:grab;flex:0 0 auto;height:auto;max-height:500px;max-width:500px;object-fit:contain;scroll-snap-align:center;transition:all .3s cubic-bezier(.4,0,.2,1);width:auto}.template-app-screenshot:active{cursor:grabbing}.template-app-screenshot:hover{box-shadow:0 12px 40px #0003;transform:scale(1.05);z-index:1}.template-app-screenshot-container::-webkit-scrollbar{height:12px;margin-top:1rem}.template-app-screenshot-container::-webkit-scrollbar-track{background:#ffffff1a;border-radius:10px;margin:0 2rem}.template-app-screenshot-container::-webkit-scrollbar-thumb{background:#718096;border-radius:10px;-webkit-transition:background .3s;transition:background .3s}.template-app-screenshot-container::-webkit-scrollbar-thumb:hover{background:#a0aec0}.template-app-screenshot-container{scrollbar-color:#718096 #ffffff1a;scrollbar-width:thin}.template-project-footer{animation:fadeInUp .6s ease-out backwards;animation-delay:.5s;margin-top:5rem}@media (max-width:768px){.template-project-container{max-width:100%;min-height:calc(100vh - 60px)}.template-project-name{font-size:2rem}.template-project-description{font-size:1rem;margin:2rem .5rem;padding:1.5rem}.template-project-description h2{font-size:1.5rem;margin:2rem 0 .75rem}.template-project-description h3{font-size:1.25rem}.template-project-description .code-block,.template-project-description pre{font-size:.85rem;padding:1rem}.template-app-screenshot-container{gap:1rem;margin:2rem -1rem;max-width:100vw;padding:1rem}.template-app-screenshot{max-height:400px;max-width:75vw}.template-app-screenshot-container::-webkit-scrollbar{display:none}.template-language-img{height:40px;margin:6px;width:40px}}@media (max-width:480px){.template-project-container{padding:1.5rem .75rem}.template-project-logo{max-width:140px}.template-github-img{width:140px}.template-project-description{font-size:.95rem;margin:2rem .5rem;padding:1.25rem}.template-project-description h2{font-size:1.375rem}.template-project-description h3{font-size:1.125rem}.template-app-screenshot-container{margin:2rem -.75rem;padding:1rem .75rem}.template-app-screenshot{max-height:350px;max-width:80vw}}.rot-encoder-container{margin:0 auto;max-width:1400px;min-height:calc(100vh - 80px);padding:3rem 2rem}.rot-encoder-header{animation:fadeInUp .6s ease-out backwards;animation-delay:.1s;margin-bottom:3rem;text-align:center}.rot-encoder-title{color:#f7fafc;font-size:clamp(2.5rem,6vw,4rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.rot-encoder-subtitle{color:#a0aec0;font-size:1.25rem}.passcode-container{animation:fadeInUp .6s ease-out backwards;animation-delay:.2s;display:flex;justify-content:center;margin-bottom:2rem}.passcode-label{align-items:center;color:#cbd5e0;display:flex;flex-direction:column;font-size:1.125rem;gap:.5rem}.passcode-input{background-color:#000;border:2px solid #9f9fae33;border-radius:8px;color:#f7fafc;font-size:1.125rem;outline:none;padding:.75rem 1.5rem;text-align:center;transition:border-color .2s;width:200px}.passcode-input:focus{border:2px solid #9f9fae}.text-box-container{align-items:stretch;animation:fadeInUp .6s ease-out backwards;animation-delay:.3s;display:flex;gap:2rem;margin-bottom:2rem}.text-box-wrapper{display:flex;flex:1 1;flex-direction:column;gap:.5rem}.box-label{color:#cbd5e0;font-size:1.125rem;font-weight:600}.text-box{background-color:#000;border:2px solid #9f9fae33;border-radius:12px;color:#f7fafc;font-family:monospace;font-size:1rem;line-height:1.6;min-height:300px;outline:none;padding:1.5rem;resize:vertical;transition:all .2s}.text-box:focus:not(:disabled){border:2px solid #9f9fae;box-shadow:0 0 0 3px #a0aec01a}.text-box-disabled{background-color:#000;border-color:#1a202c;color:#a0aec0;cursor:not-allowed}.arrow-container{align-items:center;display:flex;flex-shrink:0;justify-content:center}.arrow{color:#bdbdbd;font-size:3rem;font-weight:700}.button-container{animation:fadeInUp .6s ease-out backwards;animation-delay:.4s;display:flex;gap:1rem;justify-content:center;margin-bottom:3rem}.process-button{background:#e2e8f0;border:none;border-radius:12px;color:#000;cursor:pointer;font-size:1.125rem;font-weight:600;padding:1rem 2.5rem;transition:all .3s}.process-button:hover{background:#f7fafc;scale:1.05}.process-button:active{transform:translateY(0)}.clear-button{background-color:initial;border:2px solid #2d3748;border-radius:12px;color:#cbd5e0;cursor:pointer;font-size:1.125rem;font-weight:600;padding:1rem 2.5rem;transition:all .3s}.clear-button:hover{border:2px solid #9f9fae;color:#f7fafc}.clear-button:active{transform:scale(.98)}.info-box{animation:fadeInUp .6s ease-out backwards;animation-delay:.5s;background-color:#000;border:2px solid #9f9fae33;border-radius:12px;margin:0 auto;max-width:800px;padding:1rem 2rem}.info-title{color:#f7fafc;font-size:1.5rem;font-weight:600;margin-bottom:1rem}.info-list{color:#cbd5e0;font-size:1rem;line-height:1.8;padding-left:1.5rem}.info-list li{margin-bottom:.5rem}@media (max-width:768px){.rot-encoder-container{padding:2rem 1rem}.text-box-container{flex-direction:column;gap:1.5rem}.arrow-container{transform:rotate(90deg)}.text-box{min-height:200px}.button-container{align-items:stretch;flex-direction:column}.clear-button,.process-button{width:100%}}@media (max-width:480px){.rot-encoder-container{padding:1.5rem .75rem}.rot-encoder-title{font-size:2rem}.rot-encoder-subtitle{font-size:1rem}.passcode-input{font-size:1rem;width:150px}.text-box{font-size:.9rem;padding:1rem}.info-box{padding:1.5rem}}.writing-page{margin:0 auto;max-width:1000px;min-height:calc(100vh - 80px);padding:3rem 2rem}.writing-header{animation:fadeInUp .6s ease-out backwards;margin-bottom:4rem;text-align:center}.writing-header h1{color:#f7fafc;font-size:clamp(2.5rem,6vw,4rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.writing-header p{color:#a0aec0;font-size:1.25rem}.articles-list{display:flex;flex-direction:column;gap:2rem}.article-preview{animation:fadeInUp .6s ease-out backwards;border:2px solid #4c515a80;border-radius:16px;padding:2.5rem;text-decoration:none;transition:all .3s ease}.article-preview:first-child{animation-delay:.1s}.article-preview:nth-child(2){animation-delay:.2s}.article-preview:nth-child(3){animation-delay:.3s}.article-preview:nth-child(4){animation-delay:.4s}.article-preview:nth-child(5){animation-delay:.5s}.article-preview:hover{border:2px solid #4c515a}.article-preview h2{color:#f7fafc;font-size:1.75rem;font-weight:700;margin-bottom:.5rem}.article-preview time{color:#a0aec0;display:block;font-size:.95rem;margin-bottom:1rem}.article-preview p{color:#cbd5e0;line-height:1.6;margin-bottom:1rem}.read-more{align-self:flex-end;color:#cbd5e080;font-size:1rem;font-weight:500;margin:0;transition:all .2s}.article-preview:hover .read-more{color:#cbd5e0cc}@media (max-width:768px){.writing-page{padding:2rem 1rem}.writing-header{margin-bottom:2rem}.article-preview{padding:2rem}.article-preview h2{font-size:1.5rem}}.writing-article{margin:0 auto;max-width:750px;min-height:calc(100vh - 80px);padding:4rem 2rem}.article-header{animation:fadeInUp .6s ease-out backwards;animation-delay:.1s;border-bottom:1px solid #2d3748;margin-bottom:3rem;padding-bottom:2rem;text-align:center}.article-title{color:#f7fafc;font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;margin-bottom:1rem}.article-authors{align-items:baseline;color:#cbd5e0;display:flex;flex-wrap:wrap;font-size:1.1rem;gap:.25rem;justify-content:center;line-height:1.6;margin-bottom:1rem}.author-name{align-items:baseline;display:inline-flex;white-space:nowrap}.author-link{border-bottom:1px solid #0000;color:#a0aec0;text-decoration:none;transition:all .2s ease}.author-link:hover{border-bottom-color:#e2e8f0;color:#e2e8f0}.author-affiliation{color:#a0aec0;font-size:.85em;margin-left:.1rem}.author-separator{color:#718096;margin-right:.5rem}.article-date{color:#a0aec0;font-size:1rem;font-style:italic}.article-content{animation:fadeInUp .6s ease-out backwards;animation-delay:.2s;color:#e2e8f0;font-size:1.125rem;line-height:1.8;text-align:justify}.article-content h2{color:#f7fafc;font-size:2rem;font-weight:700;line-height:1.3;margin:2.5rem 0 1rem}.article-content h3{color:#f7fafc;font-size:1.5rem;font-weight:600;margin:2rem 0 .75rem}.article-content p{margin-bottom:1.5rem}.article-content strong{color:#f7fafc;font-weight:600}.article-content>p:first-child strong:only-child{display:block;font-size:1.5rem;margin-bottom:1rem;text-align:center}.article-content em{color:#cbd5e0}.article-content a{border-bottom:1px solid #a0aec04d;color:#a0aec0;text-decoration:none;transition:all .2s}.article-content a:hover{border-bottom-color:#e2e8f0;color:#e2e8f0}.reference-link{border-bottom:none!important;color:#a0aec0;font-size:.85em;font-weight:600;padding:0 .2em;text-decoration:none;vertical-align:super}.reference-link:hover{color:#e2e8f0;text-decoration:underline}.article-content code{background:#2d3748;border-radius:4px;color:#a0aec0;font-family:Monaco,Courier New,monospace;font-size:.9em;padding:.2em .4em}.article-content pre{background:#2d3748;border-radius:8px;margin:2rem 0;overflow-x:auto;padding:1.5rem}.article-content pre code{background:none;color:#e2e8f0;padding:0}.article-content blockquote{border-left:4px solid #718096;color:#cbd5e0;font-style:italic;margin:2rem 0;padding-left:1.5rem}.article-content ol,.article-content ul{margin:1.5rem 0;padding-left:2rem}.article-content li{margin-bottom:.5rem}.article-content hr{border:none;border-top:2px solid #2d3748;margin:4rem 0 2rem}.reference-item{color:#a0aec0;font-size:.95rem;line-height:1.6;margin-bottom:1rem}.article-content [id]{scroll-margin-top:100px}.pdf-download-section{animation:fadeInUp .6s ease-out backwards;animation-delay:.3s;border-top:1px solid #2d3748;margin-top:3rem;padding-top:2rem;text-align:center}.pdf-download-link{color:#f7fafc;font-size:1.125rem;text-decoration:underline;transition:color .2s ease}.pdf-download-link:hover{color:#a0aec0}@media (max-width:768px){.writing-article{padding:3rem 1.5rem}.article-header{margin-bottom:2rem;padding-bottom:1.5rem}.article-title{font-size:2rem}.article-authors{font-size:1rem;gap:.2rem}.article-content{font-size:1rem}.article-content h2{font-size:1.75rem;margin:2rem 0 .75rem}.article-content h3{font-size:1.25rem}.article-content pre{font-size:.9em;padding:1rem}.pdf-download-link{font-size:1rem}}@media (max-width:480px){.writing-article{padding:2rem 1rem}.article-authors{align-items:center;flex-direction:column;font-size:.95rem;gap:.25rem}.author-separator{display:none}.author-name:after{content:""}.article-content{font-size:.95rem}.pdf-download-section{margin-top:2rem;padding-top:1.5rem}}.about-page{box-sizing:border-box;height:calc(100vh - 80px);justify-content:center;overflow:hidden;padding:2rem;width:100vw}.about-container,.about-page{align-items:center;display:flex}.about-container{border-radius:16px;gap:4rem;max-width:1100px;padding:3rem;transition:all .3s ease}.about-image-section{flex-shrink:0}.about-image{border-radius:16px;box-shadow:0 8px 30px #0003;height:300px;object-fit:cover;transition:transform .3s ease;width:300px}.about-text-section{display:flex;flex:1 1;flex-direction:column;gap:1.5rem}.about-name{color:#f7fafc;font-size:clamp(2.5rem,5vw,3.5rem);font-weight:700;letter-spacing:-.02em;line-height:1.2}.about-education,.about-name{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin:0}.about-education{color:#cbd5e0;font-size:1.25rem;line-height:1.6}.about-experience{color:#a0aec0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1.125rem;line-height:1.8;margin:0}@media (max-width:900px){.about-container{gap:3rem;padding:2.5rem}.about-image{height:250px;width:250px}.about-name{font-size:2.5rem}.about-education{font-size:1.125rem}.about-experience{font-size:1rem}}@media (max-width:768px){.about-page{height:calc(100vh - 120px);padding:1rem}.about-container{flex-direction:column;gap:1.5rem;padding:1.5rem;text-align:center}.about-image-section{display:flex;justify-content:center}.about-image{height:180px;width:180px}.about-text-section{align-items:center;gap:1rem}.about-name{font-size:1.75rem}.about-education{font-size:.95rem}.about-experience{font-size:.9rem}}@media (max-width:480px){.about-page{height:calc(100vh - 140px);padding:.75rem}.about-container{gap:1.25rem;padding:1.25rem}.about-image{height:150px;width:150px}.about-name{font-size:1.5rem}.about-education{font-size:.875rem}.about-experience{font-size:.8rem}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.about-container{animation:fadeInUp .6s ease-out backwards}.top-bar{background-color:#000;border-bottom:1px solid #5e5e5e;box-sizing:border-box;max-width:100vw;position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:100}.top-bar-contents{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;margin:0 auto;max-width:1400px;padding:1rem 2rem}.site-title{color:#fff;font-size:1.5rem;font-weight:700;margin:0}.home-link{text-decoration:none;transition:opacity .2s}.home-link:hover{opacity:.8}.main-nav{align-items:center;display:flex;gap:2rem}.nav-link{border-radius:8px;color:#979ba1;font-size:1rem;font-weight:500;padding:.5rem 1rem;position:relative;text-decoration:none;transition:all .2s}.nav-link:hover{background-color:#776f621a;color:#fff}.nav-link:active{transform:scale(.98)}.nav-link.active{background-color:#776f621a;color:#fff}@media (max-width:768px){.top-bar-contents{flex-direction:column;gap:1rem;padding:1rem}.site-title{font-size:1.25rem}.main-nav{gap:1rem;justify-content:center;width:100%}.nav-link{font-size:.9rem;padding:.5rem .75rem}}@media (max-width:480px){.top-bar-contents{padding:.75rem .5rem}.site-title{font-size:1.1rem}.main-nav{gap:.5rem}.nav-link{font-size:.85rem;padding:.4rem .6rem}}
/*# sourceMappingURL=main.da2a7dc0.css.map*/