@font-face{font-family:Shentox;src:url(/fonts/Shentox-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg: #1f2630;--fg: #cccccc;--dim: #dadada;--accent: #00b4d8;--border: #4d4d4d}::selection{background:#00b4d8;color:#fff}html{scrollbar-color:var(--accent) transparent;scrollbar-width:thin}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 55%,transparent);border:2px solid var(--bg);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--accent)}*{box-sizing:border-box}*,*:before,*:after{transition:background-color .25s ease,color .25s ease,border-color .25s ease}body{font-family:Shentox,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;background:repeating-linear-gradient(rgba(255,255,255,.012) 0px,transparent 1px,transparent 5px),var(--bg);color:var(--fg);margin:0;padding:0;font-size:16px;font-weight:400;line-height:1.65;letter-spacing:.05em;-webkit-font-smoothing:antialiased}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;box-shadow:0 0 8px color-mix(in srgb,var(--accent) 50%,transparent)}main{max-width:680px;margin:0 auto;padding:.5rem 1.5rem 4rem}a{color:var(--fg);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--dim)}a:hover{color:var(--accent);text-decoration-color:var(--accent);text-shadow:0 0 6px color-mix(in srgb,var(--accent) 60%,transparent)}h1,h2,h3,h4,h5,h6{font-weight:400;font-size:1em;margin:0 0 .5rem;color:var(--fg);line-height:1.4;text-transform:uppercase;letter-spacing:.08em}p{margin:0 0 1em}strong,b{color:#8f8f8f}ul,ol{padding-left:1.5em;margin:0 0 1em}code{background:#1c1c1c;padding:.15em .4em;font-size:.9em;border-radius:2px}pre{background:#1c1c1c;padding:1em 1.2em;overflow-x:auto;margin:0 0 1em;border-left:2px solid var(--accent);clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%)}pre>code{background:none;padding:0;font-size:1em}blockquote{border-left:2px solid var(--accent);clip-path:polygon(0 0,100% 0,100% 100%,8px 100%,0 calc(100% - 8px));margin:0 0 1em;padding:0 0 0 1em;color:var(--dim)}hr{border:none;height:1px;margin:2rem 0;background:linear-gradient(90deg,transparent,var(--border) 30%,var(--border) 70%,transparent);position:relative}hr:after{content:"";position:absolute;top:-2px;left:50%;width:5px;height:5px;transform:translate(-50%) rotate(45deg);background:var(--accent);box-shadow:0 0 6px color-mix(in srgb,var(--accent) 60%,transparent)}img{max-width:100%;height:auto}.profile{display:flex;gap:1.2rem;align-items:flex-start;padding:1.7rem 0;border-bottom:1px solid var(--border);margin-bottom:2rem}.avatar{width:115px;height:115px;border-radius:50%;flex-shrink:0}@media(max-width:600px){.avatar{display:none}}.bio{display:flex;flex-direction:column;gap:.2rem}.name{font-weight:500;font-size:1.1em;color:var(--fg);text-transform:none;letter-spacing:inherit;margin:0}.title-separator{color:var(--dim)}.title{color:var(--dim);font-size:.95em}.stack{color:var(--dim)}.title-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.work-status{display:inline-flex;align-items:center;gap:.3em;width:fit-content;font-size:.8em;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 37%,transparent);border-radius:99px;padding:.1em .6em .1em .5em;text-decoration:none;transition:border-color .2s ease,box-shadow .2s ease}.work-status:before{content:"●";margin-right:.35em;font-size:.7em;text-shadow:0 0 4px currentColor}.work-status:hover{border-color:var(--accent);box-shadow:0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}.social{display:flex;align-items:center;gap:.6rem;margin-top:.4rem}.social a{color:var(--dim);text-decoration:none;display:flex;align-items:center;transition:color .15s,transform .15s}.social a:hover{color:var(--fg);transform:translateY(-2px) scale(1.08)}.github-activity{display:inline-flex;align-items:center;gap:.35em;width:fit-content;font-size:.8em;color:var(--dim);text-decoration:none}.github-activity:before{content:"●";color:#4ade80;font-size:.7em;text-shadow:0 0 4px currentColor}.social .github-activity:hover{color:var(--fg);transform:none}.project-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1.5rem}.project-screenshot-desktop{width:100%;height:100%;object-fit:cover;display:block}.screenshot-wrap:has(.project-screenshot-desktop){aspect-ratio:16/10}.project-screenshots-row{display:flex;gap:.5rem;margin-bottom:1rem}.screenshot-wrap{flex:1;width:0;position:relative;overflow:hidden;border-radius:4px;cursor:pointer}.screenshot-wrap img{width:100%;height:auto;display:block;transition:transform .2s ease}.screenshot-wrap:hover img{transform:scale(1.04)}.screenshot-wrap:after{content:"";position:absolute;inset:0;background:#0000;transition:background .2s ease}.screenshot-wrap:hover:after{background:#0000001f}.screenshot-wrap:before{content:"";position:absolute;top:50%;left:50%;width:28px;height:28px;transform:translate(-50%,-50%) scale(.7);opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-size:contain}.screenshot-wrap:hover:before{opacity:1;transform:translate(-50%,-50%) scale(1)}.project-screenshot-mobile{width:100%;height:auto;border-radius:4px;display:block}.project-card{border:1px solid var(--border);clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);padding:1rem 1.2rem;transition:border-color .25s cubic-bezier(.16,1,.3,1),box-shadow .25s cubic-bezier(.16,1,.3,1)}@media(prefers-reduced-motion:no-preference){.project-card{opacity:0;transform:translateY(8px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),border-color .25s cubic-bezier(.16,1,.3,1),box-shadow .25s cubic-bezier(.16,1,.3,1)}.project-card.visible{opacity:1;transform:translateY(0)}}.project-card:hover{border-color:var(--accent);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 45%,transparent)}@media(prefers-reduced-motion:no-preference){.project-card:hover{transform:translateY(-2px)}}.project-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.4rem}.project-index{font-size:.75em;color:var(--dim);border:1px solid var(--border);clip-path:polygon(4px 0,100% 0,100% calc(100% - 4px),calc(100% - 4px) 100%,0 100%,0 4px);padding:.1em .4em;letter-spacing:.05em}.project-name{font-weight:500;color:var(--fg);text-transform:none;letter-spacing:inherit;margin:0}.project-status{font-size:.78em;border-radius:99px;padding:.1em .55em;line-height:1.6}.project-status:before{content:"●";margin-right:.35em;font-size:.7em;vertical-align:1px;text-shadow:0 0 4px currentColor}.project-status.live{color:#4ade80;border:1px solid #4ade805b}.project-status.opensource,.project-status.wip{color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 50%,transparent)}.project-desc{color:var(--dim);margin:0 0 .75rem;line-height:1.6}.project-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem}.project-tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.project-tags li{font-size:.8em;color:var(--dim);border:1px solid var(--border);clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px);padding:.15em .5em}.project-link{display:inline-flex;align-items:center;gap:.3em;font-size:.8em;text-decoration:none;color:var(--dim);border:1px solid var(--border);clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px);padding:.15em .5em;white-space:nowrap;margin-left:auto}.project-link:hover{color:var(--accent);border-color:var(--accent)}#lightbox{display:none;position:fixed;inset:0;background:#000000d9;z-index:999;align-items:center;justify-content:center;cursor:zoom-out;opacity:0;transition:opacity .2s ease}#lightbox.open{display:flex}#lightbox.visible{opacity:1}#lightbox img{max-width:90vw;max-height:90vh;border-radius:6px;object-fit:contain;transform:scale(.92);transition:transform .2s ease}#lightbox.visible img{transform:scale(1)}table{width:100%;border-collapse:collapse;font-size:.9em}th,td{text-align:left;padding:.4em .8em;border-bottom:1px solid var(--border)}th{color:var(--dim);font-weight:400;text-transform:uppercase;letter-spacing:.08em;font-size:.85em;border-bottom:1px solid var(--accent);box-shadow:0 1px 4px -1px color-mix(in srgb,var(--accent) 50%,transparent)}.visitor-counter{text-align:center;color:var(--dim);font-size:.7em;letter-spacing:.08em;opacity:.55;margin:3rem 0 0}.header{max-width:680px;margin:0 auto;padding:1.5rem;display:flex;justify-content:space-between;align-items:center;position:relative}.header:after{content:"";position:absolute;bottom:0;left:1.5rem;right:1.5rem;border-bottom:1px solid var(--border)}.home{text-decoration:none;color:var(--fg);font-weight:400}.home:hover{color:var(--accent)}.intro{padding-bottom:1rem;margin-bottom:2rem;border-bottom:1px solid var(--border)}.working-with{padding-bottom:1rem;margin-bottom:2rem}.techList{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem}.techList li{font-size:.85em;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);border-radius:4px;padding:.15em .5em}
