:root{--bg-main:#0c0d0e;--bg-surface:#141618;--bg-surface-elevated:#1a1d20;--bg-input:#121416;--bg-hover:#202428;--border-subtle:#ffffff14;--border-medium:#ffffff24;--border-strong:#ffffff38;--text-primary:#f2f3f5;--text-secondary:#9ea4b0;--text-muted:#656b77;--accent-primary:#d4a373;--accent-hover:#e0b285;--font-sans:"Sora", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Fira Code", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--max-width:1140px;--header-height:64px;--radius-sm:4px;--radius-md:8px;--transition-fast:.15s cubic-bezier(.16, 1, .3, 1);--transition-smooth:.22s cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-gutter:stable;line-height:1.6}body{background-color:var(--bg-main);flex-direction:column;min-height:100vh;display:flex}a{color:inherit;transition:color var(--transition-fast);text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}h1,h2,h3,h4{color:var(--text-primary);letter-spacing:-.02em;font-weight:700;line-height:1.25}.container{width:100%;max-width:var(--max-width);margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem}.container-narrow{max-width:780px}.site-header{z-index:100;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle);height:var(--header-height);background-color:#0c0d0ee6;align-items:center;display:flex;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;width:100%;display:flex}.logo-link{transition:opacity var(--transition-fast);align-items:baseline;gap:.5rem;text-decoration:none;display:flex}.logo-link:hover{opacity:.85}.logo-osa{font-family:var(--font-mono);letter-spacing:.06em;color:var(--text-primary);font-size:.95rem;font-weight:800}.logo-slash{color:var(--border-strong);font-size:.95rem;font-weight:300}.logo-name{letter-spacing:-.02em;color:var(--text-primary);font-size:1.05rem;font-weight:700}.nav-links{align-items:center;gap:1.5rem;display:flex}.nav-item{color:var(--text-secondary);transition:color var(--transition-fast);font-size:.9rem;font-weight:500}.nav-item:hover,.nav-item.active{color:var(--text-primary)}.hero-section{padding-top:4.5rem;padding-bottom:2.5rem}.hero-title{letter-spacing:-.03em;margin-bottom:.75rem;font-size:clamp(2rem,4.5vw,3rem);font-weight:800}.hero-subtitle{color:var(--text-secondary);max-width:620px;font-size:1.15rem;line-height:1.55}.section-block{padding-top:2.5rem;padding-bottom:3.5rem}.section-header{margin-bottom:1.75rem}.section-title{letter-spacing:-.02em;font-size:1.45rem;font-weight:700}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}.project-card{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);transition:border-color var(--transition-smooth), transform var(--transition-smooth), background-color var(--transition-smooth);flex-direction:column;justify-content:space-between;display:flex;overflow:hidden}.project-card:hover{border-color:var(--border-medium);background-color:var(--bg-surface-elevated);transform:translateY(-2px)}.card-image-wrapper{aspect-ratio:16/9;background-color:var(--bg-surface-elevated);border-bottom:1px solid var(--border-subtle);width:100%;overflow:hidden}.card-image{object-fit:cover;width:100%;height:100%;transition:transform var(--transition-smooth), opacity var(--transition-smooth);display:block}.project-card:hover .card-image{transform:scale(1.02)}.card-body{flex-direction:column;flex-grow:1;padding:1.35rem;display:flex}.card-top{justify-content:space-between;align-items:center;margin-bottom:.65rem;display:flex}.card-year{font-family:var(--font-mono);color:var(--text-muted);font-size:.78rem}.card-title{letter-spacing:-.02em;color:var(--text-primary);justify-content:space-between;align-items:center;margin-bottom:.45rem;font-size:1.15rem;font-weight:700;display:flex}.card-title-arrow{color:var(--text-muted);opacity:0;transition:all var(--transition-fast);transform:translate(-3px)}.project-card:hover .card-title-arrow{opacity:1;color:var(--text-primary);transform:translate(0)}.card-tagline{color:var(--text-secondary);flex-grow:1;margin-bottom:1.15rem;font-size:.86rem;line-height:1.5}.card-tags{flex-wrap:wrap;gap:.35rem;margin-top:auto;display:flex}.tag-badge{font-family:var(--font-mono);border-radius:var(--radius-sm);background-color:var(--bg-surface-elevated);border:1px solid var(--border-subtle);color:var(--text-secondary);align-items:center;padding:.15rem .45rem;font-size:.7rem;display:inline-flex}@keyframes skeleton-shimmer{0%{background-color:#ffffff08}50%{background-color:#ffffff14}to{background-color:#ffffff08}}.skeleton-shimmer{border-radius:var(--radius-sm);background-color:#ffffff0a;animation:1.6s ease-in-out infinite skeleton-shimmer}.project-card-skeleton{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);flex-direction:column;height:100%;display:flex;overflow:hidden}.btn{border-radius:var(--radius-sm);white-space:nowrap;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;gap:.45rem;padding:.55rem 1.1rem;font-size:.88rem;font-weight:600;display:inline-flex}.btn-primary{background-color:var(--text-primary);color:var(--bg-main);border:1px solid var(--text-primary)}.btn-primary:hover{background-color:#fff}.btn-secondary{background-color:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-medium)}.btn-secondary:hover{background-color:var(--bg-hover);border-color:var(--border-strong)}.back-link{color:var(--text-muted);transition:color var(--transition-fast);align-items:center;gap:.4rem;font-size:.82rem;display:inline-flex}.back-link:hover{color:var(--text-primary)}.case-title{letter-spacing:-.03em;font-size:clamp(2rem,3.5vw,2.75rem);font-weight:800}.case-tagline{color:var(--text-secondary);max-width:680px;font-size:1.1rem;line-height:1.55}.deep-dive-section{margin-bottom:2.75rem}.deep-dive-heading{letter-spacing:-.01em;margin-bottom:.85rem;font-size:1.25rem;font-weight:700}.prose-text{color:var(--text-secondary);margin-bottom:1rem;font-size:.98rem;line-height:1.7}.components-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:1rem;display:grid}.component-card{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:1.1rem}.component-title{color:var(--text-primary);margin-bottom:.35rem;font-size:.92rem;font-weight:700}.component-desc{color:var(--text-secondary);font-size:.84rem;line-height:1.5}.tech-table{border-collapse:collapse;background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);width:100%;overflow:hidden}.tech-table th,.tech-table td{text-align:left;border-bottom:1px solid var(--border-subtle);padding:.7rem 1rem;font-size:.86rem}.tech-table th{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background-color:var(--bg-surface-elevated);font-size:.72rem}.tech-table td.tech-name{font-family:var(--font-mono);color:var(--text-primary);font-weight:600}.tech-table td.tech-role{color:var(--text-secondary)}.bullet-list{flex-direction:column;gap:.65rem;list-style:none;display:flex}.bullet-item{color:var(--text-secondary);align-items:flex-start;gap:.5rem;font-size:.92rem;line-height:1.55;display:flex}.prose-content{color:var(--text-primary);font-size:1.02rem;line-height:1.8}.prose-content h1,.prose-content h2,.prose-content h3,.prose-content h4{color:var(--text-primary);margin-top:2rem;margin-bottom:.85rem}.prose-content h2{letter-spacing:-.02em;font-size:1.45rem}.prose-content h3{font-size:1.2rem}.prose-content p{color:var(--text-secondary);margin-bottom:1.35rem}.prose-content ul,.prose-content ol{color:var(--text-secondary);margin-bottom:1.35rem;padding-left:1.5rem}.prose-content li{margin-bottom:.4rem}.prose-content blockquote{border-left:3px solid var(--accent-primary);color:var(--text-muted);margin:1.5rem 0;padding-left:1.25rem;font-style:italic}.prose-content pre{background-color:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);margin:1.5rem 0;padding:1.15rem;font-size:.88rem;line-height:1.6;overflow-x:auto}.prose-content code{font-family:var(--font-mono);background-color:var(--bg-surface-elevated);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);padding:.15rem .35rem;font-size:.88em}.prose-content pre code{background:0 0;border:none;padding:0}.prose-content img{border-radius:var(--radius-md);border:1px solid var(--border-subtle);max-width:100%;margin:2rem 0;display:block}.prose-content hr{border:none;border-top:1px solid var(--border-subtle);margin:2.5rem 0}.writing-list{flex-direction:column;display:flex}.writing-row{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:baseline;gap:1rem;padding:.85rem 0;display:flex}.writing-row:hover .writing-title{color:var(--text-primary)}.writing-title{color:var(--text-secondary);transition:color var(--transition-fast);font-size:.95rem;font-weight:500}.writing-meta{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;align-items:center;gap:1rem;font-size:.75rem;display:flex}.site-footer{border-top:1px solid var(--border-subtle);margin-top:auto;padding:2rem 0}.footer-link{color:var(--text-muted);transition:color var(--transition-fast)}.footer-link:hover{color:var(--text-primary)}.admin-layout{background-color:var(--bg-main);height:100dvh;max-height:100dvh;display:flex;overflow:hidden}.admin-sidebar{background-color:var(--bg-surface);border-right:1px solid var(--border-subtle);flex-direction:column;flex-shrink:0;justify-content:space-between;width:240px;height:100dvh;padding:1.25rem 1rem;display:flex;overflow:hidden}.admin-sidebar-header{border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;display:flex}.admin-sidebar-brand{align-items:center;gap:.5rem;display:flex}.admin-mobile-actions{display:none}.admin-nav{flex-direction:column;flex-shrink:0;gap:.35rem;display:flex;overflow:visible}.admin-nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition-fast);align-items:center;gap:.75rem;padding:.55rem .75rem;font-size:.88rem;font-weight:500;display:flex}.admin-nav-item:hover{background-color:var(--bg-hover);color:var(--text-primary)}.admin-nav-item.active{background-color:var(--bg-surface-elevated);color:var(--text-primary);border:1px solid var(--border-subtle);font-weight:600}.admin-sidebar-footer{border-top:1px solid var(--border-subtle);flex-direction:column;flex-shrink:0;gap:.65rem;margin-top:auto;padding-top:1rem;display:flex}.admin-main{flex-grow:1;max-width:1200px;height:100dvh;padding:2.5rem 3rem;overflow-y:auto}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.82rem;font-weight:500;display:flex}.form-input,.form-select,.form-textarea{background-color:var(--bg-input);border:1px solid var(--border-medium);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);outline:none;padding:.65rem .85rem;font-family:inherit;font-size:.9rem}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-muted)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent-primary);background-color:var(--bg-surface-elevated);box-shadow:0 0 0 1px #d4a37340}.form-select{appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ea4b0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:14px;padding-right:2rem}.form-textarea{resize:vertical;min-height:80px;line-height:1.55}.form-grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;display:grid}.form-grid-3{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.25rem;display:grid}.form-checkbox-label{cursor:pointer;color:var(--text-primary);-webkit-user-select:none;user-select:none;align-items:center;gap:.6rem;font-size:.88rem;display:inline-flex}.form-checkbox{appearance:none;background-color:var(--bg-input);border:1px solid var(--border-medium);border-radius:var(--radius-sm);cursor:pointer;width:18px;height:18px;transition:all var(--transition-fast);place-content:center;display:inline-grid}.form-checkbox:checked{background-color:var(--accent-primary);border-color:var(--accent-primary)}.form-checkbox:checked:before{content:"";border-bottom:2px solid #0c0d0e;border-left:2px solid #0c0d0e;width:10px;height:6px;transform:rotate(-45deg)translate(1px,-1px)}@media (width<=768px){.admin-layout{flex-direction:column;height:auto;min-height:100dvh;max-height:none;overflow-y:auto}.admin-sidebar{border-right:none;border-bottom:1px solid var(--border-subtle);z-index:90;-webkit-backdrop-filter:blur(12px);background-color:#0c0d0ef5;width:100%;height:auto;min-height:auto;padding:.75rem 1rem;position:sticky;top:0;overflow:visible}.admin-sidebar-header{margin-bottom:.35rem;padding-bottom:.35rem}.admin-mobile-actions{align-items:center;gap:.65rem;display:flex}.admin-nav{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-direction:row;gap:.35rem;padding:.15rem 0;overflow-x:auto}.admin-nav::-webkit-scrollbar{display:none}.admin-nav-item{white-space:nowrap;flex-shrink:0;padding:.35rem .75rem;font-size:.82rem}.admin-sidebar-footer{display:none}.admin-main{max-width:100%;height:auto;padding:1.25rem 1rem 4rem;overflow-y:visible}.form-grid-2,.form-grid-3{grid-template-columns:1fr}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin-animation{animation:.9s linear infinite spin;display:inline-block}
