.theme-toggle{position:fixed;top:16px;left:16px;z-index:60;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:999px;width:40px;height:40px;display:grid;place-items:center;box-shadow:var(--shadow);cursor:pointer;color:rgb(var(--fg) / .8);transition:color .3s ease}.theme-toggle:hover{color:rgb(var(--primary))}.theme-toggle:focus-visible{outline:2px solid rgb(var(--primary) / .55);outline-offset:3px}.gallery-nav{position:fixed;top:16px;right:16px;z-index:60;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:999px;width:40px;height:40px;display:grid;place-items:center;box-shadow:var(--shadow);cursor:pointer;color:rgb(var(--fg) / .8);text-decoration:none;transition:color .3s ease}.gallery-nav:hover{color:rgb(var(--primary))}.gallery-nav:focus-visible{outline:2px solid rgb(var(--primary) / .55);outline-offset:3px}.gallery-nav .ms{font-size:22px}.avatar{width:96px;height:96px;border-radius:999px;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--bg));display:grid;place-items:center;margin:0 auto 18px;box-shadow:var(--shadow);overflow:visible;perspective:1000px;cursor:pointer}@media (min-width: 768px){.avatar{width:112px;height:112px;margin-bottom:20px}}.avatar-inner{position:relative;width:100%;height:100%;border-radius:999px;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.card{width:100%;max-width:52rem;border-radius:var(--radius);border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));box-shadow:var(--shadow);padding:22px;position:relative;z-index:1;text-align:center}@media (min-width: 768px){.card{padding:28px}}.card p{margin:0;color:rgb(var(--fg) / .82);font-size:18px;line-height:1.75}.timeline{width:100%;max-width:48rem;margin:0 auto;text-align:center}.timeline-body{position:relative;display:flow-root;padding-top:3rem;margin-bottom:80px}.timeline-body:before{content:"";position:absolute;top:0;bottom:-80px;left:14px;width:1px;background:linear-gradient(to bottom,rgb(var(--border) / .22) 0%,rgb(var(--border) / .22) calc(100% - 60px),transparent 100%);z-index:1;pointer-events:none}@media (min-width: 768px){.timeline-body:before{left:50%;transform:translate(-50%);bottom:-80px;background:linear-gradient(to bottom,rgb(var(--border) / .22) 0%,rgb(var(--border) / .22) calc(100% - 60px),transparent 100%)}}.t-item{position:relative;display:grid;gap:14px;padding:2px 0 2px 42px;margin:0 0 38px}.t-item:last-child{margin-bottom:0}@media (min-width: 768px){.t-item{grid-template-columns:1fr 1fr;padding-left:0;margin-bottom:46px;gap:0;column-gap:4rem}.t-item:last-child{margin-bottom:0}}.t-dot{position:absolute;left:14px;top:14px;width:10px;height:10px;border-radius:999px;background:rgb(var(--bg));border:2px solid rgb(var(--border) / .22);transform:translate(-50%);z-index:2;transition:border-color .3s ease}@media (min-width: 768px){.t-dot{left:50%}}.t-date{display:inline-block;font-size:12px;font-weight:800;padding:6px 10px;border-radius:999px;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));color:rgb(var(--fg) / .7);letter-spacing:.04em;box-shadow:var(--shadow);transition:color .3s ease,border-color .3s ease}.t-content h3{margin:0;font-size:20px;font-weight:800;color:rgb(var(--fg) / .92);transition:color .3s ease;padding-top:1rem}.t-item:hover .t-content h3{color:rgb(var(--primary))}.t-item:hover .t-dot{border-color:rgb(var(--primary))}.t-item:hover .t-date{color:rgb(var(--primary));border-color:rgb(var(--primary) / var(--border-alpha))}.t-meta{margin-top:6px;font-size:13px;font-weight:700;color:rgb(var(--muted))}.t-desc{margin-top:10px;font-size:13px;line-height:1.65;color:rgb(var(--fg) / .62)}.t-skills{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:flex-start}@media (min-width: 768px){.t-skills{margin-top:0;align-self:start}}.t-skill-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));color:rgb(var(--fg) / .7);font-size:11px;font-weight:600;box-shadow:var(--shadow);white-space:nowrap;transition:color .2s ease}.t-skill-badge .ms{font-size:14px;color:rgb(var(--fg) / .45);transition:color .2s ease}.t-skill-badge:hover,.t-skill-badge:hover .ms{color:rgb(var(--primary))}@media (min-width: 768px){.t-item.left .t-date-wrap,.t-item.left .t-content{grid-column:1;justify-self:end;text-align:right}.t-item.left .t-skills{grid-column:2;justify-self:start;justify-content:flex-start;width:67%;place-self:auto}.t-item.right .t-date-wrap,.t-item.right .t-content{grid-column:2;justify-self:start;text-align:left}.t-item.right .t-skills{place-self:auto;grid-column:1;justify-self:end;justify-content:flex-end;width:90%}}.timeline-divider{width:100%;max-width:48rem;height:64px;margin:0}.section-divider{width:100%;max-width:48rem;height:64px;margin:0 0 64px}.skills{width:100%;max-width:48rem;margin:0 auto;text-align:center}.skills ul{margin:0 auto;padding:0;list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:12px 22px;max-width:42rem}.skill{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:999px;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));color:rgb(var(--fg) / .82);box-shadow:var(--shadow);cursor:default;-webkit-user-select:none;user-select:none}.skill .ms{font-size:18px;color:rgb(var(--fg) / .45)}.skill:hover,.skill:hover .ms{color:rgb(var(--primary))}footer{width:100%;max-width:var(--maxw);margin:auto auto 0;padding:26px var(--pad) 32px;border-top:1px solid rgb(var(--border) / var(--border-alpha));text-align:center}.links{display:inline-flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center}.links a{font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:rgb(var(--fg) / .82);transition:color .3s ease}.links a:hover{color:rgb(var(--primary))}.dot{color:rgb(var(--fg) / .2);font-weight:800}.copy{margin:18px 0 0;font-size:12px;font-weight:700;color:rgb(var(--fg) / .4)}.view{display:none;width:100%}.view.active{display:block}#gallery-view .gallery-header{width:100%;text-align:center;margin-bottom:48px}#gallery-view .gallery-header h1{margin:0;font-size:40px;letter-spacing:-.02em;font-weight:800;text-transform:uppercase}#gallery-view .gallery-header .subtitle{margin-top:14px}@media (min-width: 768px){#gallery-view .gallery-header h1{font-size:54px}}#field-bg,#field-grid,.dash{display:none}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;background-image:url("data:image/svg+xml,%3Csvg viewBox=%220 0 200 200%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Cfilter id=%22noiseFilter%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%220.65%22 numOctaves=%223%22 stitchTiles=%22stitch%22/%3E%3C/filter%3E%3Crect width=%22100%25%22 height=%22100%25%22 filter=%22url(%23noiseFilter)%22 opacity=%220.03%22/%3E%3C/svg%3E")}.grain-light{opacity:.55;mix-blend-mode:multiply}html.dark .grain-light{opacity:0}.grain-dark{opacity:0;mix-blend-mode:overlay}html.dark .grain-dark{opacity:.6}.gallery{width:100%;max-width:var(--maxw)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;padding:1rem 0}.gallery-item{position:relative;border-radius:var(--radius);overflow:hidden;cursor:pointer;border:1px solid rgb(var(--border) / var(--border-alpha));background:rgb(var(--card) / var(--card-alpha));box-shadow:var(--shadow)}.gallery-item .gallery-item img{width:100%;height:200px;object-fit:cover;display:block}.gallery-item .gallery-item-title{padding:1rem;font-size:14px;font-weight:600;color:rgb(var(--fg) / .9)}.gallery-item .lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000000e6;display:none;align-items:center;justify-content:center;padding:2rem}.gallery-item .lightbox.active{display:flex}.gallery-item .lightbox img{max-width:90%;max-height:90%;object-fit:contain;border-radius:var(--radius)}.gallery-item .lightbox-close{position:absolute;top:1rem;right:1rem;background:#ffffff1a;border:none;color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:20px;display:grid;place-items:center}.gallery-item .lightbox-close:hover{background:#fff3}.gallery-item html{overflow-y:scroll;scrollbar-gutter:stable always}.gallery-item .gallery-container{width:100%;max-width:72rem;padding:0 var(--pad)}.gallery-item .gallery-masonry{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}@media (min-width: 768px){.gallery-item .gallery-masonry{grid-template-columns:repeat(3,1fr);gap:20px}}@media (min-width: 1200px){.gallery-item .gallery-masonry{grid-template-columns:repeat(4,1fr);gap:24px}}.gallery-item .gallery-item{position:relative;border-radius:12px;overflow:hidden;cursor:pointer;background:rgb(var(--card) / var(--card-alpha));border:1px solid rgb(var(--border) / var(--border-alpha));box-shadow:var(--shadow);aspect-ratio:1}.gallery-item .gallery-item img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.gallery-item .gallery-item[data-ratio=tall]{grid-row:span 2;aspect-ratio:auto}.gallery-item .gallery-item[data-ratio=wide]{grid-column:span 2;aspect-ratio:16/9}@media (max-width: 767px){.gallery-item .gallery-item[data-ratio=wide]{grid-column:span 2}}.gallery-item .lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:none;align-items:center;justify-content:center;background:rgb(var(--bg) / .95);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);cursor:pointer}.gallery-item .lightbox-overlay.active{display:flex}.gallery-item .lightbox-expander{position:fixed;z-index:1001;overflow:hidden;border-radius:12px;background:rgb(var(--bg));box-shadow:0 25px 50px -12px #00000080,0 0 0 1px #ffffff1a;cursor:default}.gallery-item .lightbox-expander img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.gallery-item .lightbox-close,.gallery-item .lightbox-nav,.gallery-item .lightbox-prev,.gallery-item .lightbox-next,.gallery-item .lightbox-info,.gallery-item .lightbox-counter{display:none!important}
