.logoloop{position:relative;overflow:hidden;--logoloop-gap: 32px;--logoloop-logoHeight: 28px;--logoloop-fadeColorAuto: #ffffff}.logoloop--vertical{height:100%;display:inline-block}.logoloop--scale-hover{padding-top:calc(var(--logoloop-logoHeight) * .1);padding-bottom:calc(var(--logoloop-logoHeight) * .1)}@media (prefers-color-scheme: dark){.logoloop{--logoloop-fadeColorAuto: #0b0b0b}}.logoloop__track{display:flex;width:max-content;will-change:transform;-webkit-user-select:none;user-select:none;position:relative;z-index:0}.logoloop--vertical .logoloop__track{flex-direction:column;height:max-content;width:100%}.logoloop__list{display:flex;align-items:center;margin:0;padding:0;list-style:none}.logoloop--vertical .logoloop__list{flex-direction:column}.logoloop__item{flex:0 0 auto;margin-right:var(--logoloop-gap);font-size:var(--logoloop-logoHeight);line-height:1;list-style:none}.logoloop--vertical .logoloop__item{margin-right:0;margin-bottom:var(--logoloop-gap)}.logoloop__item:last-child{margin-right:var(--logoloop-gap)}.logoloop--vertical .logoloop__item:last-child{margin-right:0;margin-bottom:var(--logoloop-gap)}.logoloop__node{display:inline-flex;align-items:center}.logoloop__item img{height:var(--logoloop-logoHeight);width:auto;display:block;object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop--scale-hover .logoloop__item{overflow:visible}.logoloop--scale-hover .logoloop__item:hover img,.logoloop--scale-hover .logoloop__item:hover .logoloop__node{transform:scale(1.2);transform-origin:center center}.logoloop--scale-hover .logoloop__node{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop__link{display:inline-flex;align-items:center;text-decoration:none;border-radius:4px;transition:opacity .2s ease}.logoloop__link:hover{opacity:.8}.logoloop__link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.logoloop--fade:before,.logoloop--fade:after{content:"";position:absolute;top:0;bottom:0;width:clamp(24px,8%,120px);pointer-events:none;z-index:10}.logoloop--fade:before{left:0;background:linear-gradient(to right,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--fade:after{right:0;background:linear-gradient(to left,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--vertical.logoloop--fade:before,.logoloop--vertical.logoloop--fade:after{left:0;right:0;width:100%;height:clamp(24px,8%,120px)}.logoloop--vertical.logoloop--fade:before{top:0;bottom:auto;background:linear-gradient(to bottom,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}.logoloop--vertical.logoloop--fade:after{bottom:0;top:auto;background:linear-gradient(to top,var(--logoloop-fadeColor, var(--logoloop-fadeColorAuto)) 0%,rgba(0,0,0,0) 100%)}@media (prefers-reduced-motion: reduce){.logoloop__track{transform:translateZ(0)!important}.logoloop__item img,.logoloop__node{transition:none!important}}.gradual-blur-inner{position:relative;width:100%;height:100%}.gradual-blur-inner>div{-webkit-backdrop-filter:inherit;backdrop-filter:inherit}.gradual-blur{isolation:isolate}@supports not (backdrop-filter: blur(1px)){.gradual-blur-inner>div{background:#0000004d;opacity:.5}}.gradual-blur-fixed{position:fixed!important;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:1000}:root{--bg: #ffffff;--bg-subtle: #fafafa;--surface: #f5f5f5;--surface-2: #eeeeee;--border: #e5e5e5;--line: #d4d4d4;--text: #171717;--text-secondary:#737373;--muted: rgba(23, 23, 23, .4);--accent: #0a0a0a;--accent-muted: rgba(0, 0, 0, .04);--primary: #171717;--primary-text: #fafafa;--secondary: #f5f5f5;--secondary-text:#171717;--danger: #dc2626;--success: #16a34a;--ring: #a3a3a3;--radius: 10px;--radius-sm: 6px;--font-sans: "Geist", system-ui, -apple-system, sans-serif;--font-mono: "Geist Mono", ui-monospace, monospace;--font-hand: "Caveat", cursive}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.6;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;flex-direction:column;min-height:100dvh}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.content{flex:1;width:100%;max-width:720px;margin:0 auto;padding:0 1rem;padding-top:72px;padding-bottom:4rem}@media (min-width: 640px){.content{padding:0 1.5rem;padding-top:72px;padding-bottom:5rem}}.page{display:flex;flex-direction:column;gap:0;width:100%}.page--auth{justify-content:center;min-height:calc(100dvh - 200px)}.panel{position:relative;border:1px solid var(--border);padding:1.5rem}@media (min-width: 640px){.panel{padding:2rem}}.panel+.panel{margin-top:-1px}.hatch-divider{height:32px;background:repeating-linear-gradient(135deg,var(--line) 0,var(--line) 1px,transparent 1px,transparent 8px);margin-top:-1px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.section-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.section-title{font-family:var(--font-hand);font-size:1.75rem;font-weight:600;letter-spacing:-.01em;line-height:1;color:var(--text)}.section-count{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);font-weight:500}.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--text-secondary);font-weight:600;opacity:.8}h1{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;line-height:1.2;letter-spacing:-.025em}h1 em{font-style:normal;color:var(--text)}h2{font-size:1.1rem;font-weight:600}.subtext{color:var(--text-secondary);font-weight:400;font-size:.95rem;max-width:48ch;line-height:1.65}.page-state{text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:1rem;align-items:center;justify-content:center;padding:4rem 1rem}.page-state>h2{color:var(--text);font-size:1.5rem}.page-state--error{color:var(--danger)}.hero{display:flex;flex-direction:column;gap:1.25rem}.hero-bio-section{display:flex;flex-direction:column;gap:.875rem}.hero-title{font-size:clamp(1.75rem,4.5vw,2.25rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;color:var(--text);margin:0}.hero-subtext{color:var(--text-secondary);font-size:16px;max-width:52ch;line-height:1.7;font-weight:400}.social-links{display:flex;gap:.625rem;flex-wrap:wrap;align-items:center}.social-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);transition:all .25s ease;position:relative;overflow:hidden}.social-link:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:var(--text);opacity:0;transition:opacity .25s ease;z-index:-1}.social-link:hover{transform:translateY(-3px);border-color:var(--text);color:var(--bg);box-shadow:0 4px 12px #00000026}.social-link:hover:before{opacity:1}.social-link svg{width:20px;height:20px;position:relative;z-index:1}.tech-marquee{width:100%;overflow:hidden}html,body{overflow-x:clip}.logoloop__node{opacity:.7;transition:opacity .2s ease;filter:grayscale(.2)}.logoloop__node:hover{opacity:1;filter:grayscale(0)}.home-lanyard{position:relative;width:100%;height:min(70vh,600px);overflow:hidden}.home-lanyard .lanyard-wrapper{height:100%}.lanyard-upload-card{display:flex;flex-direction:column;gap:.75rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.lanyard-upload-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-weight:500}.lanyard-upload-preview{display:flex;align-items:center;justify-content:center;aspect-ratio:16 / 9;border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.lanyard-upload-preview img{width:100%;height:100%;object-fit:contain}.lanyard-upload-empty{color:var(--muted);font-size:12px;font-family:var(--font-mono)}.lanyard-upload-card input[type=file]{font-size:12px;color:var(--text-secondary)}.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 1.5rem;height:56px;border-bottom:1px solid var(--border);background:#ffffffeb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}@media (min-width: 640px){.nav{padding:0 2rem}}.nav-brand{font-family:var(--font-mono);font-size:13px;font-weight:600;letter-spacing:.03em;color:var(--text);white-space:nowrap}.nav-brand span{color:var(--text-secondary);font-weight:400}.nav-links{display:flex;align-items:center;gap:.1rem}.nav-link{padding:.4rem .75rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;font-weight:450;transition:color .15s ease,background .15s ease}.nav-link:hover{color:var(--text)}.nav-link.active{color:var(--text);font-weight:500}.nav-auth{display:flex;align-items:center}.nav-user{display:flex;align-items:center;gap:.6rem}.nav-user-name{color:var(--text-secondary);font-size:13px;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.55rem 1.1rem;border-radius:var(--radius-sm);border:1px solid transparent;font-family:var(--font-sans);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;color:var(--text);background:transparent;letter-spacing:.01em}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:active{transform:scale(.98)}.btn-primary{background:var(--primary);color:var(--primary-text);font-weight:500;border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:#262626}.btn-ghost{border-color:var(--border);color:var(--text-secondary);background:var(--bg)}.btn-ghost:hover:not(:disabled){border-color:var(--line);color:var(--text);background:var(--surface)}.btn--danger{color:var(--danger)}.btn--danger:hover{border-color:#dc26264d;background:#dc26260a}.btn-sm{padding:.3rem .7rem;font-size:12px}.btn-block{width:100%}.btn-row{display:flex;gap:.5rem}.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .6rem;border-radius:6px;background:var(--surface);color:var(--text-secondary);font-size:11px;font-weight:500;border:1px solid var(--border);font-family:var(--font-mono)}.chip--active{color:var(--text);border-color:var(--line)}.tag{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;font-weight:400}.tech-list{display:flex;flex-wrap:wrap;gap:.3rem}.grid{display:flex;flex-direction:column;gap:0;width:100%}.project-card{display:grid;grid-template-columns:60px 1fr auto;align-items:center;gap:0;padding:.75rem 0;border-bottom:1px dashed var(--border);color:var(--text);transition:background .15s ease;text-decoration:none}.project-card:hover{background:var(--accent-muted);margin:0 -1rem;padding-left:1rem;padding-right:1rem}.project-card-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);box-shadow:inset 0 0 0 1px var(--border),0 0 0 1px var(--bg),0 0 0 2px var(--border);color:var(--text-secondary);font-family:var(--font-mono);font-size:14px;font-weight:600;overflow:hidden}.project-card-icon img{width:100%;height:100%;object-fit:cover}.project-card-body{display:flex;flex-direction:column;gap:.15rem;padding-left:.75rem;border-left:1px dashed var(--border)}.project-card-title{font-size:14px;font-weight:500;line-height:1.3;display:flex;align-items:center;gap:.4rem}.project-card-desc{color:var(--text-secondary);font-size:13px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.project-card-arrow{color:var(--text-secondary);transition:transform .2s ease,color .2s ease;padding:0 .25rem}.project-card:hover .project-card-arrow{transform:translate(2px,-2px);color:var(--text)}.project-card-arrow svg{width:16px;height:16px}.project-card-tags{display:flex;gap:.3rem;padding-top:.35rem}.project-detail{display:flex;flex-direction:column;gap:2rem;width:100%}.project-detail-media img,.project-detail-placeholder{width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.project-detail-placeholder{display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:2.5rem;font-weight:600;color:var(--text-secondary)}.project-detail-info{display:flex;flex-direction:column;gap:1rem;align-items:flex-start}.detail-meta{display:flex;align-items:center;gap:.6rem}.detail-date{color:var(--text-secondary);font-size:12px;font-family:var(--font-mono)}.project-detail-info h1{font-size:1.5rem}.project-detail-desc{color:var(--text-secondary);line-height:1.7}.project-links{display:flex;gap:.5rem;margin-top:.25rem}.field{display:flex;flex-direction:column;gap:.3rem;font-size:13px;color:var(--text-secondary)}.field input,.field textarea,.field select,.admin-table select{padding:.55rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.field input:focus,.field textarea:focus,.field select:focus,.admin-table select:focus{outline:none;border-color:var(--line);box-shadow:0 0 0 3px #0000000a}.field input::placeholder,.field textarea::placeholder{color:var(--ring)}.field textarea{resize:vertical}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.check-field{display:flex;align-items:center;gap:.5rem;font-size:13px;color:var(--text-secondary);cursor:pointer}.check-field input{accent-color:var(--text);width:15px;height:15px}.form-note{font-size:13px;color:var(--text-secondary)}.form-note--error{color:var(--danger)}.form-note--ok{color:var(--success)}.auth-form{display:flex;flex-direction:column;gap:1.1rem;width:100%;max-width:360px;padding:0}.contact-form{max-width:400px}.auth-head{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.25rem}.auth-head .subtext{font-size:14px}.auth-alt{text-align:center;font-size:13px;color:var(--text-secondary)}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border)}.tab{padding:.5rem 1rem;border-radius:0;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--text-secondary);font-family:var(--font-sans);font-size:13px;font-weight:450;cursor:pointer;transition:color .15s ease;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab--active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.admin-layout{display:grid;grid-template-columns:1fr;gap:1.5rem;width:100%;align-items:start}@media (min-width: 860px){.admin-layout{grid-template-columns:380px 1fr}}.admin-form{display:flex;flex-direction:column;gap:.9rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;position:sticky;top:72px}.admin-table-wrap{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;width:100%;overflow-x:auto;display:flex;flex-direction:column;gap:1rem}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th,.admin-table td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table th{color:var(--text-secondary);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.td-actions{display:flex;gap:.3rem;white-space:nowrap}.admin-table select{padding:.3rem .45rem;border-radius:var(--radius-sm)}.contact-inbox{display:flex;flex-direction:column;gap:.6rem;width:100%;max-width:720px}.contact-inbox>h2{margin-bottom:.25rem}.message-card{display:flex;flex-direction:column;gap:.5rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:default;transition:border-color .15s ease}.message-card:hover{border-color:var(--line)}.message-card--unread{border-left:2px solid var(--text)}.message-card-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.message-card-name{font-weight:500;font-size:13px}.message-card-email{color:var(--text-secondary);font-size:12px}.message-card-right{display:flex;align-items:center;gap:.5rem}.message-card-date{color:var(--muted);font-size:11px;font-family:var(--font-mono)}.message-card-body{color:var(--text-secondary);font-size:13px;white-space:pre-wrap;line-height:1.6}.status-pill{display:inline-block;padding:.15rem .5rem;border-radius:99px;font-size:10px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--border);color:var(--text-secondary);font-weight:500}.status-pill--active{color:var(--success);border-color:#16a34a4d;background:#16a34a0a}.status-pill--archived{color:var(--danger);border-color:#dc26264d;background:#dc26260a}.status-pill--draft{color:var(--muted)}.footer{display:flex;align-items:center;justify-content:center;gap:1.25rem;height:48px;border-top:1px solid var(--border);font-family:var(--font-hand);font-size:15px;color:var(--text-secondary);letter-spacing:.02em}.footer a:hover{color:var(--text)}.reveal{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .5s ease}.reveal.visible{opacity:1;transform:translateY(0)}@media (max-width: 640px){.nav{padding:0 1rem}.nav-links{order:3;width:100%;justify-content:center;padding-bottom:.4rem}.nav{flex-wrap:wrap;height:auto;padding-top:.5rem;padding-bottom:.5rem}.content{padding-top:100px;padding-left:.75rem;padding-right:.75rem}.panel{border-left:none;border-right:none;padding-left:1rem;padding-right:1rem}.hatch-divider{border-left:none;border-right:none}.field-row{grid-template-columns:1fr}.message-card-top{flex-direction:column;align-items:flex-start}.nav-user-name{display:none}.project-card{grid-template-columns:1fr auto}.project-card-icon{display:none}.project-card-body{border-left:none;padding-left:0}.profile-pic{width:100px;height:100px}.hero-title{font-size:1.75rem}.hero-subtext{font-size:15px;line-height:1.6}.social-links{gap:.5rem}.social-link{width:40px;height:40px}.social-link svg{width:18px;height:18px}.profile-upload-section{align-items:center;text-align:center}.profile-upload-preview-large{width:140px;height:140px}.profile-placeholder-large{font-size:2rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}.reveal{opacity:1;transform:none}}.profile-pic{position:relative;width:120px;height:120px;border-radius:50%;overflow:hidden;border:4px solid var(--border);background:var(--surface);flex-shrink:0;box-shadow:0 4px 12px #0000001a;transition:all .3s ease}.profile-pic:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.profile-pic img{width:100%;height:100%;object-fit:cover}.profile-pic-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:1.75rem;font-weight:700;color:var(--text-secondary);background:linear-gradient(135deg,var(--surface),var(--surface-2))}@media (min-width: 640px){.profile-pic{width:140px;height:140px}.profile-pic-placeholder{font-size:2rem}}.theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;flex-shrink:0}.theme-toggle:hover{border-color:var(--line);color:var(--text);background:var(--surface)}.theme-toggle svg{width:16px;height:16px}.dark{--bg: #0a0a0a;--bg-subtle: #111111;--surface: #171717;--surface-2: #1f1f1f;--border: #262626;--line: #404040;--text: #fafafa;--text-secondary:#a3a3a3;--muted: rgba(250, 250, 250, .4);--accent: #ededed;--accent-muted: rgba(255, 255, 255, .06);--primary: #fafafa;--primary-text: #0a0a0a;--secondary: #262626;--secondary-text:#fafafa;--ring: #525252}.dark .nav{background:#0a0a0ae0}.dark .footer{background:#0a0a0a80}.dark .logoloop__node{filter:grayscale(.1) brightness(.9)}.dark .logoloop__node:hover{filter:grayscale(0) brightness(1.1)}.dark .social-link{border-color:#262626}.dark .social-link:hover{border-color:#404040;background:#171717}.dark .profile-pic{border-color:#404040;box-shadow:0 4px 12px #0000004d}.dark .profile-pic:hover{box-shadow:0 8px 25px #0006}.dark .profile-upload-preview-large{border-color:#404040;box-shadow:0 4px 12px #0000004d}.profile-admin{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:600px}.profile-upload-section{display:flex;flex-direction:column;gap:1.5rem;align-items:center}@media (min-width: 640px){.profile-upload-section{flex-direction:row;align-items:flex-start}}.profile-upload-preview-large{width:160px;height:160px;border-radius:50%;overflow:hidden;border:4px solid var(--border);background:var(--surface);box-shadow:0 4px 12px #0000001a;flex-shrink:0}.profile-upload-preview-large img{width:100%;height:100%;object-fit:cover}.profile-placeholder-large{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:2.5rem;font-weight:700;color:var(--text-secondary);background:linear-gradient(135deg,var(--surface),var(--surface-2))}.profile-upload-controls{display:flex;flex-direction:column;gap:1rem;min-width:240px}.file-input-wrapper{position:relative}.file-input-wrapper input[type=file]{position:absolute;opacity:0;pointer-events:none}.file-input-label{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.file-input-label:hover{border-color:var(--line);background:var(--bg);color:var(--text)}
