.ph{position:relative;overflow:hidden;min-height:480px;display:flex;align-items:center;justify-content:center;padding:5.5rem 1.5rem 5rem}.ph:after{content:"";bottom:0;left:0;right:0;height:100px;background:linear-gradient(to bottom,#0000,var(--bg));z-index:2}.ph-bg,.ph:after{position:absolute;pointer-events:none}.ph-bg{inset:0;z-index:0}.ph-orb{position:absolute;border-radius:50%;filter:blur(90px)}.ph-orb--1{width:520px;height:520px;top:-140px;left:-120px;background:radial-gradient(circle,#0284c773 0,#0000 70%)}.ph-orb--2{width:440px;height:440px;top:0;right:-100px;background:radial-gradient(circle,#8b5cf666 0,#0000 70%)}.ph-orb--3{width:380px;height:380px;bottom:-60px;left:35%;background:radial-gradient(circle,#6366f159 0,#0000 70%)}.ph-grid{position:absolute;inset:0;background-image:radial-gradient(circle,var(--border) 1px,#0000 1px);background-size:30px 30px;opacity:.6;mask-image:radial-gradient(ellipse 65% 65% at 50% 50%,#000 20%,#0000 100%);-webkit-mask-image:radial-gradient(ellipse 65% 65% at 50% 50%,#000 20%,#0000 100%);pointer-events:none;z-index:1}.ph-inner{position:relative;z-index:3;max-width:680px;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.75rem;will-change:transform}.ph-eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--accent);letter-spacing:.1em;text-transform:uppercase;background:color-mix(in srgb,var(--accent) 10%,#0000);border:1px solid color-mix(in srgb,var(--accent) 22%,#0000);padding:.3rem .9rem;border-radius:var(--radius-full)}.ph-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;animation:ph-pulse 2s ease-in-out infinite}@keyframes ph-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}.ph-title{font-size:clamp(2.6rem,7vw,4.75rem);font-weight:800;line-height:1.04;letter-spacing:-.03em;color:var(--text-primary);margin:0}.ph-title-accent{background:linear-gradient(130deg,var(--accent) 0,#8b5cf6 60%,#a78bfa 100%);-webkit-background-clip:text;-webkit-text-fill-color:#0000;background-clip:text}.ph-subtitle{font-size:var(--text-lg);color:var(--text-secondary);line-height:1.65;margin:0;max-width:460px}.ph-stats{gap:2rem}.ph-stat,.ph-stats{display:flex;align-items:center}.ph-stat{flex-direction:column;gap:.15rem}.ph-stat-value{font-size:var(--text-2xl);font-weight:800;color:var(--text-primary);line-height:1;letter-spacing:-.02em}.ph-stat-label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;font-weight:var(--font-medium)}.ph-stat-sep{width:1px;height:36px;background:var(--border);flex-shrink:0}.ph-cta{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.ph-btn-primary{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.5rem;background:var(--accent);color:var(--accent-text);border-radius:var(--radius-full);font-weight:var(--font-semibold);font-size:var(--text-sm);transition:opacity var(--transition-fast),transform var(--transition-fast);white-space:nowrap}.ph-btn-primary:hover{opacity:.85;transform:translateY(-2px)}.ph-btn-secondary{display:inline-flex;align-items:center;gap:.4rem;padding:.7rem 1.5rem;background:var(--bg-elevated);color:var(--text-primary);border-radius:var(--radius-full);font-weight:var(--font-semibold);font-size:var(--text-sm);border:1px solid var(--border);transition:background var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast);white-space:nowrap}.ph-btn-secondary:hover{background:var(--border);transform:translateY(-2px)}@media(max-width:640px){.ph{min-height:380px;padding:4rem 1rem 3.5rem}.ph-stats{gap:1.25rem}.ph-orb--1{width:300px;height:300px}.ph-orb--2{width:260px;height:260px}.ph-orb--3{width:220px;height:220px}}.projects-section{max-width:80rem;margin:0 auto;padding:2rem 1rem 4rem}.tech-filter{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:2rem}.tech-filter-all{padding:.3rem .85rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-semibold);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:color var(--transition-fast),border-color var(--transition-fast),background var(--transition-fast)}.tech-filter-all:hover{border-color:var(--accent);color:var(--accent)}.tech-filter-all.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.tech-filter-sep{width:1px;height:22px;background:var(--border);flex-shrink:0}.tech-filter-cat{position:relative}.tech-filter-cat-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-medium);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:color var(--transition-fast),border-color var(--transition-fast),background var(--transition-fast)}.tech-filter-cat-btn.active,.tech-filter-cat-btn.open,.tech-filter-cat-btn:hover{border-color:var(--accent);color:var(--accent)}.tech-filter-cat-btn.active{background:var(--bg-surface);font-weight:var(--font-semibold)}.tech-filter-chevron{font-size:10px;opacity:.7}.tech-filter-dropdown{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:170px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 24px #00000024;padding:.25rem;display:flex;flex-direction:column;gap:1px}.tech-filter-option{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .6rem;border-radius:var(--radius-sm);border:none;background:#0000;color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;text-align:left;transition:background var(--transition-fast),color var(--transition-fast)}.tech-filter-option.selected,.tech-filter-option:hover{background:var(--bg-elevated);color:var(--tech-color,var(--accent))}.tech-filter-option.selected{font-weight:var(--font-semibold)}.tech-filter-option-icon{display:flex;align-items:center;justify-content:center;width:18px;flex-shrink:0;color:inherit}.tech-filter-option-label{flex:1;line-height:1.2}.tech-filter-option-check{font-size:13px;flex-shrink:0}.tech-filter-abbrev{font-size:8px;font-weight:800;font-family:monospace;letter-spacing:-.02em;text-transform:uppercase}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.project-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--transition-fast)}.project-card:hover{border-color:var(--accent)}.project-thumb{display:block;overflow:hidden;aspect-ratio:16/9;background:var(--bg-elevated)}.project-thumb-img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-base)}.project-thumb:hover .project-thumb-img{transform:scale(1.04)}.project-card-body{display:flex;flex-direction:column;gap:.75rem;padding:1.25rem;flex:1}.project-card-header{display:flex;flex-direction:column;gap:.25rem}.project-card-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin:0}.project-card-title a{color:inherit;transition:color var(--transition-fast)}.project-card-title a:hover{color:var(--accent)}.project-live-link{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--text-sm);color:var(--text-muted);transition:color var(--transition-fast)}.project-live-link:hover{color:var(--accent)}.project-live-link i{font-size:.7rem}.project-description{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-tech-wrapper{display:flex;flex-direction:column;gap:.35rem}.project-tech{display:flex;flex-wrap:wrap;gap:.4rem}.project-tech--collapsed{max-height:3.7rem;overflow:hidden}.project-tech-toggle{align-self:flex-start;background:none;border:none;padding:0;font-size:var(--text-xs);color:var(--accent);cursor:pointer;font-weight:var(--font-semibold)}.project-tech-toggle:hover{text-decoration:underline}.tech-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--text-xs);font-weight:var(--font-semibold);padding:3px 8px;border-radius:var(--radius-full);white-space:nowrap}.tech-badge-icon{display:flex;align-items:center;flex-shrink:0;opacity:.85}.tech-badge-abbrev{font-size:8px;font-weight:800;font-family:monospace;letter-spacing:-.02em;text-transform:uppercase;line-height:1}.project-meta{font-size:var(--text-xs);color:var(--text-muted);display:flex;align-items:center;gap:.35rem}.project-hosted{display:inline-flex;align-items:center;gap:.35rem}.project-actions{display:flex;gap:.5rem;margin-top:auto;padding-top:.25rem}.project-card--wip{border-style:dashed;opacity:.85}.project-thumb-img--wip{filter:blur(2px) grayscale(40%);opacity:.6}.project-wip-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--accent);color:var(--accent-text);font-size:var(--text-xs);font-weight:var(--font-semibold);padding:.3rem .75rem;border-radius:var(--radius-full);white-space:nowrap;pointer-events:none}.project-thumb{position:relative}.flow-diagram-section{border-top:1px solid var(--border);padding-top:2rem}.flow-diagram-heading{font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin:0 0 1.25rem}.schema-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.875rem}.schema-card{background:var(--bg-surface);border:1px solid var(--border);border-top:3px solid var(--schema-color,var(--accent));border-radius:var(--radius-md);display:flex;flex-direction:column;overflow:hidden}.schema-card-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;background:color-mix(in srgb,var(--schema-color,var(--accent)) 10%,var(--bg-elevated));border-bottom:1px solid var(--border)}.schema-card-name{font-family:monospace;font-size:var(--text-sm);font-weight:700;color:var(--schema-color,var(--accent));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schema-card-count{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;flex-shrink:0}.schema-card-fields{display:flex;flex-direction:column;flex:1}.schema-field{display:flex;align-items:baseline;justify-content:space-between;gap:.625rem;padding:.25rem .75rem;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,#0000);font-family:monospace;font-size:11px;transition:background var(--transition-fast)}.schema-field:last-child{border-bottom:none}.schema-field:nth-child(2n){background:var(--bg-elevated)}.schema-field:hover{background:color-mix(in srgb,var(--schema-color,var(--accent)) 5%,var(--bg-elevated))}.schema-field-name{display:flex;align-items:center;gap:.3rem;color:var(--text-secondary);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.schema-field.required .schema-field-name{color:var(--text-primary);font-weight:600}.schema-field-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--schema-color,var(--accent));flex-shrink:0}.schema-field-type{font-size:10px;color:var(--text-muted);text-align:right;white-space:nowrap;flex-shrink:0}.schema-field.ref .schema-field-type{color:var(--schema-color,var(--accent));opacity:.85}.schema-card-more{font-size:var(--text-xs);font-family:monospace;color:var(--schema-color,var(--accent));background:none;border:none;cursor:pointer;padding:.35rem .75rem;text-align:left;opacity:.8;transition:opacity var(--transition-fast)}.schema-card-more:hover{opacity:1}.schema-card-detail{font-size:var(--text-xs);color:var(--text-muted);line-height:1.55;padding:.6rem .75rem;margin:0;border-top:1px solid var(--border);background:var(--bg-elevated)}.project-detail{max-width:80rem;margin:0 auto;padding:3rem 1rem 4rem;display:flex;flex-direction:column;gap:1.5rem}.project-detail-back{margin-bottom:.5rem}.project-detail-title{font-size:var(--text-4xl);font-weight:var(--font-bold);color:var(--text-primary);margin:0}@media(max-width:640px){.project-detail-title{font-size:var(--text-3xl)}}.project-detail-thumb{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.project-gallery{display:flex;flex-direction:column;gap:.625rem}.project-gallery-hero{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border);background:var(--bg-elevated);aspect-ratio:16/9}.project-gallery-hero-img{width:100%;height:100%;object-fit:cover;display:block}.project-gallery-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:36px;height:36px;border-radius:50%;border:none;background:#00000073;backdrop-filter:blur(6px);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--transition-fast)}.project-gallery-nav:hover{background:#000000b3}.project-gallery-nav--prev{left:.75rem}.project-gallery-nav--next{right:.75rem}.project-gallery-counter{position:absolute;bottom:.75rem;right:.75rem;z-index:2;background:#00000073;backdrop-filter:blur(6px);color:#fff;font-size:var(--text-xs);font-weight:var(--font-medium);padding:.2rem .55rem;border-radius:var(--radius-full)}.project-gallery-thumbs{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:2px}.project-gallery-thumbs::-webkit-scrollbar{height:3px}.project-gallery-thumbs::-webkit-scrollbar-track{background:#0000}.project-gallery-thumbs::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.project-gallery-thumb{flex-shrink:0;width:96px;aspect-ratio:16/9;border-radius:var(--radius-sm);overflow:hidden;border:2px solid var(--border);padding:0;cursor:pointer;background:var(--bg-elevated);transition:border-color var(--transition-fast)}.project-gallery-thumb:hover{border-color:var(--text-secondary)}.project-gallery-thumb.active{border-color:var(--accent)}.project-gallery-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.project-detail-img{width:100%;height:auto;display:block}.project-detail-description{font-size:var(--text-lg);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0}.project-detail-tech{display:flex;flex-wrap:wrap;gap:.5rem}.project-detail-hosted{font-size:var(--text-base);color:var(--text-secondary);display:flex;align-items:center;gap:.4rem;margin:0}.project-detail-actions{display:flex;gap:.75rem;flex-wrap:wrap}.project-roadmap{display:flex;flex-direction:column;gap:1rem}.project-roadmap-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.project-roadmap-title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--text-secondary);margin:0;text-transform:uppercase;letter-spacing:.05em}.project-roadmap-stats{display:flex;align-items:center;gap:1.25rem}.roadmap-stat{font-size:var(--text-sm);display:flex;align-items:center;gap:.4rem}.roadmap-stat:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.roadmap-stat--done{color:#22c55e}.roadmap-stat--done:before{background:#22c55e}.roadmap-stat--progress{color:var(--accent)}.roadmap-stat--progress:before{background:var(--accent)}.roadmap-stat--planned{color:var(--text-muted)}.roadmap-stat--planned:before{background:#0000;border:1.5px solid var(--text-muted)}.project-roadmap-bar{height:4px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.project-roadmap-bar-fill{height:100%;background:#22c55e;border-radius:var(--radius-full)}.project-roadmap-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;align-items:start}.roadmap-col{background:var(--bg-elevated);border-radius:var(--radius-md);padding:1rem;border-top:3px solid #0000}.roadmap-col--done{border-top-color:#22c55e}.roadmap-col--progress{border-top-color:var(--accent)}.roadmap-col--planned{border-top-color:var(--border)}.roadmap-col-title{font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:0 0 .75rem;display:flex;align-items:center;gap:.4rem}.roadmap-col-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.roadmap-col--done .roadmap-col-dot{background:#22c55e}.roadmap-col--progress .roadmap-col-dot{background:var(--accent)}.roadmap-col--planned .roadmap-col-dot{background:#0000;border:1.5px solid var(--text-muted)}.roadmap-col-count{margin-left:auto;font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--font-normal);letter-spacing:0;text-transform:none}.roadmap-col-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0}.roadmap-feature{font-size:var(--text-sm);padding:.35rem 0;border-bottom:1px solid var(--border)}.roadmap-feature:last-child{border-bottom:none}.roadmap-col--done .roadmap-feature{color:var(--text-primary)}.roadmap-col--progress .roadmap-feature{color:var(--text-secondary)}.roadmap-col--planned .roadmap-feature{color:var(--text-muted)}