:root{--radius:4px;--bg:#0e0f11;--surface:#ffffff08;--surface-hover:#ffffff0f;--surface-solid:#16171b;--border:#ffffff14;--border-hover:#ffffff3d;--accent:#f97316;--accent-hover:#fb923c;--accent-bright:#fdba74;--accent-contrast:#1c1006;--text:#ffffffeb;--text-muted:#fff9;--font-display:"Space Grotesk", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}::selection{background:var(--accent);color:var(--accent-contrast)}a{color:var(--accent);-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:var(--accent-hover)}body{flex-direction:column;place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex}html,body{height:100%}.content{flex:1 0 auto;width:100%}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em}h1{font-size:3.2em;line-height:1.1}button{border-radius:var(--radius);cursor:pointer;background-color:#1a1a1a;border:1px solid #0000;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:border-color .25s}button:hover{border-color:var(--accent)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}*,:before,:after{box-sizing:border-box}#root{text-align:center;flex-direction:column;width:100%;min-height:100vh;margin:0 auto;padding:0;display:flex;overflow-x:hidden}.content{flex-direction:column;flex:1 0 auto;justify-content:center;align-items:center;width:100%;padding:2rem;display:flex}.home-content{flex-direction:column;flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;padding:1.5rem;display:flex}.page-content{flex-direction:column;flex:1 0 auto;justify-content:flex-start;align-items:center;gap:1.25rem;width:100%;padding:2.5rem 2rem;display:flex}.logo{will-change:filter;width:auto;max-width:90vw;height:auto;max-height:60vh;padding:1.5em;transition:filter .3s}#model{--progress-bar-color:none;--progress-bar-height:0px}.brain-container{justify-content:center;align-items:center;width:90%;max-width:1000px;height:100%;min-height:60vh;margin:0 auto;display:flex;position:relative}.brain-annotation{pointer-events:none;flex-direction:column;align-items:flex-start;gap:.5rem;display:flex;position:absolute;top:20%;right:5%}.annotation-text{color:#ffffffd9;text-align:left;text-shadow:1px 1px 2px #0000004d;order:1;font-family:Caveat,cursive;font-size:1.5rem;font-weight:600;line-height:1.2;transform:rotate(-3deg)}.annotation-arrow{color:#ffffffbf;filter:drop-shadow(1px 1px 1px #0000004d);width:120px;height:80px;transform:rotate(5deg)}.annotation-arrow-horizontal{order:2;display:block}.annotation-arrow-vertical{display:none}@media (width<=1024px){.brain-annotation{top:15%;right:-80px}.annotation-text{font-size:1.3rem}.annotation-arrow{width:100px;height:70px}}@media (width<=768px){.brain-container{flex-direction:column;gap:1rem}.brain-annotation{align-items:center;margin-top:1rem;position:static}.annotation-text{text-align:center;order:2;font-size:1.2rem;transform:rotate(0)}.annotation-arrow{width:60px;height:80px;transform:rotate(0)}.annotation-arrow-horizontal{display:none}.annotation-arrow-vertical{order:1;display:block}}.about-bio{text-align:left;width:100%;max-width:900px;display:block}.bio-photo{float:left;object-fit:cover;border-radius:var(--radius);width:200px;height:200px;margin:0 1rem .75rem 0;box-shadow:0 8px 30px #0006}.bio-content{text-align:left;color:#fffffff2;overflow-wrap:anywhere;max-width:640px;font-size:1rem;line-height:1.6}.alien{clear:both;width:180px;margin:2rem auto 0;display:block}.nightsky{width:420px;margin:3rem auto 0;display:block}@media (width<=680px){.about-bio{flex-direction:column;align-items:center;padding:0 1rem;display:flex}.bio-photo{float:none;width:150px;height:150px;margin:0 0 1rem}.bio-content{text-align:center}.alien{width:100px}.nightsky{width:320px}}.top-nav{background:color-mix(in srgb, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:50;justify-content:space-between;align-items:center;padding:.85rem 1.5rem;display:flex;position:sticky;top:0}.nav-links{align-items:center;gap:1.5rem;display:flex}.nav-link{color:inherit;letter-spacing:.2px;align-items:center;gap:.4rem;padding:.25rem .6rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-flex}.nav-links .nav-link{position:relative}.nav-links .nav-link:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform .22s;position:absolute;bottom:-2px;left:.6rem;right:.6rem;transform:scaleX(0)}.nav-links .nav-link:hover:after,.nav-links .nav-link.active:after{transform:scaleX(1)}.nav-brand{font-size:1.15rem;line-height:1;font-family:var(--font-display);flex-direction:column;align-items:flex-start;display:flex}.nav-sub{opacity:.85;color:#ffffffe6;margin-top:2px;font-size:.72rem;font-weight:500;transform:translateY(-1px)}.blog-list{flex-direction:column;gap:1rem;width:100%;max-width:620px;margin:0 auto;padding:0;list-style:none;display:flex}.blog-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:inherit;font-weight:inherit;align-items:stretch;gap:1rem;transition:border-color .18s,background .18s;display:flex;overflow:hidden}.blog-item:hover{border-color:var(--border-hover);background:var(--surface-hover)}.blog-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.blog-thumb{object-fit:cover;flex-shrink:0;align-self:stretch;width:128px;transition:transform .3s}.blog-item:hover .blog-thumb{transform:scale(1.05)}.blog-item-info{text-align:start;flex-direction:column;justify-content:center;gap:.3rem;min-width:0;min-height:96px;padding:1rem;display:flex}.blog-thumb+.blog-item-info{padding-left:0}.blog-item-title{font-size:1.05rem}.blog-item-date{color:#ffffff8c;font-size:.85rem}.post-list{grid-template-columns:repeat(2,1fr);gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (width<=680px){.post-list{grid-template-columns:1fr}}.post-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:stretch;gap:1rem;transition:border-color .18s,background .18s;display:flex;overflow:hidden}.post-item:hover{border-color:var(--border-hover);background:var(--surface-hover)}.post-thumb{object-fit:cover;flex-shrink:0;align-self:stretch;width:88px;transition:transform .3s}.post-item:hover .post-thumb{transform:scale(1.05)}.post-item-info{flex-direction:column;flex:1;justify-content:center;gap:.25rem;min-width:0;padding:1rem;display:flex}.post-thumb+.post-item-info{padding-left:0}.post-item,.blog-item{animation:.36s backwards item-in}@keyframes item-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.post-title{text-align:start;margin-bottom:.25rem;font-size:1.05rem;display:block}.post-tagline{color:#ffffffb3;text-align:start;font-size:.95rem}.tag-list{align-items:center;gap:.4rem;display:flex}.tag-chip{border-radius:var(--radius);color:#ffffffe6;background:#ffffff0a;padding:.15rem .45rem;font-size:.75rem}.tag-icon{object-fit:contain;vertical-align:middle;width:18px;height:18px;margin-right:.35rem}.modal-overlay{z-index:9999;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface-solid);color:#fff;text-align:start;border-radius:var(--radius);width:90%;max-width:760px;max-height:90vh;padding:1.5rem 1.25rem;position:relative;overflow:auto;box-shadow:0 10px 40px #0009}.modal-close{color:#fff;cursor:pointer;background:0 0;border:none;font-size:1.4rem;position:absolute;top:8px;right:12px}.modal-content p{white-space:pre-wrap}@media (width<=768px){.modal-overlay{justify-content:stretch;align-items:stretch;padding:0}.modal{border-radius:0;width:100%;max-width:none;height:100vh;max-height:none;padding:3rem 1rem 1rem;overflow-y:auto}.modal-close{z-index:10;border-radius:var(--radius);background:#00000080;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.8rem;display:flex;position:fixed;top:1rem;right:1rem}}select#tag-filter{color:#fff;border-radius:var(--radius);background:#111;border:1px solid #ffffff0f;padding:.35rem .5rem}.filter-chip{color:#fff;border-radius:var(--radius);cursor:pointer;background:#ffffff08;border:1px solid #ffffff0a;padding:.4rem .7rem}.filter-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filter-chip.active{background:var(--accent);color:var(--accent-contrast);border-color:#0000}.filter-popup{border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;width:100%;margin-bottom:1.5rem;padding:.75rem;display:flex;position:relative}.project-masonry{column-count:3;column-gap:1rem;margin-top:1rem}@media (width<=1100px){.project-masonry{column-count:2}}@media (width<=700px){.project-masonry{column-count:1}}.project-masonry>.project-image,.project-masonry>.project-file{break-inside:avoid;margin:0 0 1rem}.project-image{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.5rem;transition:border-color .18s;display:flex;overflow:hidden}.project-image:hover{border-color:var(--border-hover)}.project-image img{border-radius:var(--radius) var(--radius) 0 0;width:100%;height:auto;display:block;box-shadow:0 4px 12px #0000004d}.image-caption{color:#ffffffb3;text-align:center;margin:0;padding:.5rem;font-size:.9rem;font-style:italic}.lightbox-overlay{z-index:10000;cursor:pointer;background:#000000e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-overlay[hidden],.pdf-viewer-overlay[hidden]{display:none}.lightbox-content{cursor:default;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;display:flex;position:relative}.lightbox-image{object-fit:contain;border-radius:var(--radius);max-width:100%;max-height:calc(90vh - 80px);box-shadow:0 8px 32px #0009}.lightbox-caption{color:#ffffffe6;text-align:center;max-width:600px;margin:1rem 0 .5rem;font-size:1rem;font-style:italic;line-height:1.4}.lightbox-counter{color:#ffffffb3;margin:.5rem 0 0;font-family:monospace;font-size:.9rem}.lightbox-close{color:#fff;border-radius:var(--radius);cursor:pointer;z-index:10001;background:#00000080;border:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;transition:background-color .2s;display:flex;position:absolute;top:20px;right:20px}.lightbox-close:hover{background:#000c}.lightbox-nav{color:#fff;border-radius:var(--radius);cursor:pointer;z-index:10001;background:#00000080;border:none;justify-content:center;align-items:center;width:50px;height:50px;font-size:24px;transition:background-color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover{background:#000c}.lightbox-prev{left:20px}.lightbox-next{right:20px}@media (width<=768px){.lightbox-nav{width:40px;height:40px;font-size:20px}.lightbox-prev{left:10px}.lightbox-next{right:10px}.lightbox-close{width:35px;height:35px;font-size:20px;top:10px;right:10px}}.footer{margin-top:auto;padding:2rem 1rem}.footer-links{flex-wrap:wrap;justify-content:center;gap:2rem;display:flex}.footer-link{color:#fff;font-weight:500;text-decoration:none;transition:opacity .3s;display:inline-block}.footer-link:hover{opacity:.7}.footer-icon{filter:invert();width:30px;height:30px;transition:filter .3s}.footer-link:hover .footer-icon{filter:invert(.5)}.project-file{break-inside:avoid;margin-bottom:1rem}.file-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:#fff;padding:1rem;transition:border-color .18s,background .18s}.file-card:hover{background:var(--surface-hover);border-color:var(--border-hover)}.file-icon{text-align:center;margin-bottom:.5rem;font-size:2rem}.file-info h4{margin:0 0 .5rem;font-size:1rem;font-weight:600;line-height:1.3}.file-description{color:#ccc;margin:0 0 .5rem;font-size:.875rem;line-height:1.4}.file-type{border-radius:var(--radius);text-transform:uppercase;letter-spacing:.5px;background:#ffffff1a;padding:.25rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.file-actions{gap:.5rem;margin-top:1rem;display:flex}.file-action-btn{color:#fff;border-radius:var(--radius);cursor:pointer;background:#ffffff1a;border:1px solid #fff3;flex:1;padding:.5rem .75rem;font-size:.875rem;transition:all .3s}.file-action-btn:hover{background:#fff3;border-color:#ffffff4d}.view-btn{background:#3b82f633;border-color:#3b82f64d}.view-btn:hover{background:#3b82f64d;border-color:#3b82f666}.download-btn{background:#22c55e33;border-color:#22c55e4d}.download-btn:hover{background:#22c55e4d;border-color:#22c55e66}.pdf-viewer-overlay{z-index:1000;background:#000000e6;justify-content:center;align-items:center;width:100%;height:100%;padding:1rem;display:flex;position:fixed;top:0;left:0}.pdf-viewer-modal{border-radius:var(--radius);background:#fff;flex-direction:column;width:100%;max-width:1200px;height:100%;max-height:100%;display:flex;overflow:hidden}.pdf-viewer-header{background:#f8f9fa;border-bottom:1px solid #dee2e6;justify-content:space-between;align-items:center;padding:1rem;display:flex}.pdf-viewer-header h3{color:#333;margin:0;font-size:1.125rem}.pdf-viewer-actions{gap:.5rem;display:flex}.pdf-action-btn{color:#fff;border-radius:var(--radius);cursor:pointer;background:#007bff;border:none;padding:.5rem 1rem;font-size:.875rem;transition:background-color .3s}.pdf-action-btn:hover{background:#0056b3}.pdf-close-btn{color:#fff;border-radius:var(--radius);cursor:pointer;background:#6c757d;border:none;padding:.5rem .75rem;font-size:1rem;transition:background-color .3s}.pdf-close-btn:hover{background:#545b62}.pdf-viewer-content{flex:1;overflow:hidden}.pdf-viewer-content iframe{border:none}@media (width<=768px){.pdf-viewer-overlay{padding:.5rem}.pdf-viewer-header{flex-direction:column;align-items:stretch;gap:.5rem;padding:.75rem}.pdf-viewer-actions{justify-content:center}}.post-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.route-wrap{flex-direction:column;flex:1 0 auto;width:100%;min-height:0;animation:.26s route-in;display:flex}@keyframes route-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.skeleton{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff0d,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.skeleton-card{height:96px}.skeleton-blog{height:128px}.thought-article{text-align:start;width:100%;max-width:68ch;margin:0 auto}.back-link{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9rem;transition:color .16s;display:inline-block}.back-link:hover{color:var(--accent-bright)}.thought-title{margin:0 0 .4rem;font-size:2.2rem;line-height:1.15}.thought-date{color:var(--text-muted);margin-bottom:1.75rem;font-size:.9rem;display:block}.thought-hero{object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);width:100%;max-height:420px;margin-bottom:2rem}.project-tagline{color:var(--text-muted);max-width:68ch;margin:.25rem 0 1.5rem;font-size:1.1rem}.thought-body{color:var(--text);font-size:1.05rem;line-height:1.75}.thought-body h2,.thought-body h3{margin-top:2.25rem;margin-bottom:.75rem;line-height:1.25}.thought-body p{margin:0 0 1.25rem}.thought-body ul,.thought-body ol{margin:0 0 1.25rem;padding-left:1.4rem}.thought-body li{margin-bottom:.4rem}.thought-body blockquote{border-left:2px solid var(--accent);color:var(--text-muted);margin:1.5rem 0;padding:.25rem 0 .25rem 1.1rem}.thought-body code{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius);padding:.1rem .35rem;font-size:.9em}@media (width<=680px){.thought-title{font-size:1.7rem}}.tipti-page{width:100%}.bento-grid{grid-template-columns:repeat(4,1fr);gap:1.5rem;width:100%;margin-top:1.5rem;display:grid}.bento-tile{aspect-ratio:4/5;border-radius:var(--radius);border:1px solid var(--border);cursor:pointer;color:inherit;opacity:0;text-decoration:none;transition:opacity .62s,transform .62s cubic-bezier(.22,1,.36,1),border-color .3s;display:block;position:relative;overflow:hidden;transform:translateY(18px)}.bento-tile.is-visible{opacity:1;transform:none}.bento-tile:hover,.bento-tile:focus-visible{border-color:var(--border-hover)}.bento-tile:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.bento-cover{object-fit:cover;filter:brightness(.82)saturate(.95);width:100%;height:100%;transition:filter .5s,transform .7s cubic-bezier(.22,1,.36,1);display:block;position:absolute;inset:0;transform:scale(1)}.bento-tile:hover .bento-cover,.bento-tile:focus-visible .bento-cover{filter:brightness()saturate();transform:scale(1.05)}.bento-cover-fallback{background:radial-gradient(circle at 28% 22%, #f9731629, transparent 55%), radial-gradient(circle at 80% 80%, #fdba7414, transparent 50%), var(--surface-solid)}.bento-overlay{text-align:left;border-radius:var(--radius);background:linear-gradient(#0000 22%,#08090b59 55%,#08090be6 100%);flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:.4rem;padding:1.1rem;display:flex;position:absolute;inset:0}.bento-title{font-family:var(--font-display);color:var(--text);margin:0;font-size:1.1rem;line-height:1.2}.bento-tagline{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.4}.bento-tags{flex-wrap:wrap;gap:.4rem;display:flex}.bento-visual .bento-overlay{opacity:0;transition:opacity .42s}.bento-visual:hover .bento-overlay,.bento-visual:focus-visible .bento-overlay,.bento-technical .bento-overlay,.bento-hybrid .bento-overlay{opacity:1}.bento-hybrid .bento-tagline{opacity:0;transition:opacity .4s}.bento-hybrid:hover .bento-tagline,.bento-hybrid:focus-visible .bento-tagline{opacity:1}@media (width<=1200px){.bento-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=900px){.bento-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.bento-grid{grid-template-columns:1fr}.bento-visual .bento-overlay,.bento-hybrid .bento-tagline{opacity:1}.bento-cover{filter:none}}
