html,body{margin:0;padding:0;height:100%;background:#000;font-family:geist mono,sans-serif;color:#fff}.background{position:fixed;width:100%;height:100%;top:0;left:0;z-index:0}svg{width:100%;height:100%;filter:blur(1px)brightness(1.2)}.flow-path{fill:none;stroke:#fff;stroke-width:1;stroke-opacity:.2;stroke-dasharray:1500;stroke-dashoffset:0;animation:flow 12s ease-in-out infinite alternate}.glow{stroke-opacity:.12;animation-duration:18s}.flow-path:nth-child(3n){animation-delay:2s}.flow-path:nth-child(4n){animation-delay:4s}@keyframes flow{0%{stroke-dashoffset:0}100%{stroke-dashoffset:3e3}}.centered{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;z-index:1}.centered h1{font-size:3.5rem;margin-bottom:1.5rem;letter-spacing:4px}.centered nav a{display:block;margin:.3rem 0;color:#ccc;text-decoration:none;font-size:1.1rem}.centered nav a:hover{color:#ff3c3c}.nav-label{display:block;font-size:.7rem;color:#555;text-transform:uppercase;letter-spacing:2px;margin-top:1.2rem;margin-bottom:.3rem}.centered nav a[href^=http]::after{content:" ↗";font-size:.8em;opacity:.5}.centered nav a[href^="/"]::after{content:none}.page-content{position:relative;z-index:1;max-width:720px;margin:4rem auto;padding:0 2rem}.page-content h1{font-size:2.5rem;letter-spacing:3px;margin-bottom:2rem}.article-header{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid rgba(255,255,255,8%)}.article-header h1{font-size:2.2rem;letter-spacing:1px;line-height:1.3;margin:.5rem 0 1rem}.article-meta{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#666;text-transform:uppercase;letter-spacing:1px}.meta-sep{color:#444}.article-footer{margin-top:4rem;padding-top:2rem;padding-bottom:4rem;border-top:1px solid rgba(255,255,255,8%)}.article-footer a{color:#888;text-decoration:none;font-size:.9rem;transition:color .2s}.article-footer a:hover{color:#ff3c3c}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.coming-soon{grid-column:1/-1;text-align:center;padding:3rem 2rem;border:1px solid rgba(255,255,255,8%);border-radius:12px;background:rgba(255,255,255,3%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:fadeInUp .6s ease-out}.coming-soon-icon{display:block;font-size:2.5rem;margin-bottom:1rem;animation:float 3s ease-in-out infinite}.coming-soon h2{font-size:1.4rem;letter-spacing:2px;margin:0 0 .5rem;color:#fff}.coming-soon p{color:rgba(255,255,255,.5);font-size:.95rem;margin:0 0 1rem}.coming-soon-dots span{display:inline-block;font-size:1.5rem;color:#ff3c3c;animation:blink 1.4s infinite both}.coming-soon-dots span:nth-child(2){animation-delay:.2s}.coming-soon-dots span:nth-child(3){animation-delay:.4s}@keyframes fadeInUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes blink{0%,80%,100%{opacity:0}40%{opacity:1}}.project-card{display:block;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:1.5rem;text-decoration:none;color:#fff;transition:border-color .3s,transform .2s;background:rgba(255,255,255,5%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.project-card:hover{border-color:#ff3c3c;transform:translateY(-2px);background:rgba(255,255,255,8%)}.project-card img{width:100%;border-radius:4px;margin-bottom:1rem}.project-card h2{font-size:1.3rem;margin:0 0 .5rem}.project-card p{color:#aaa;font-size:.9rem;margin:.3rem 0}.tags{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}.tag{background:rgba(255,255,255,8%);padding:.2rem .6rem;border-radius:4px;font-size:.8rem;color:#ccc}.project-links{margin:1rem 0 0;display:flex;gap:1.5rem}.project-links a{color:#ff3c3c;text-decoration:none;font-size:.9rem;letter-spacing:.5px;transition:opacity .2s}.project-links a:hover{opacity:.7}.project-body{line-height:1.9;color:#ccc;font-size:1.05rem}.project-body h2{color:#fff;margin-top:3rem;margin-bottom:1rem;font-size:1.5rem;letter-spacing:.5px;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,6%)}.project-body h3{color:#eee;margin-top:2.5rem;margin-bottom:.8rem;font-size:1.2rem}.project-body h4{color:#ddd;margin-top:2rem;margin-bottom:.6rem;font-size:1.05rem;letter-spacing:.5px}.project-body p{margin-bottom:1.2rem}.project-body a{color:#ff3c3c;text-decoration:none;border-bottom:1px solid rgba(255,60,60,.3);transition:border-color .2s}.project-body a:hover{border-color:#ff3c3c}.project-body strong{color:#fff;font-weight:600}.project-body em{color:#e0e0e0}.project-body code{font-family:geist mono,monospace;font-size:.88em;background:rgba(255,255,255,6%);padding:.15em .4em;border-radius:4px;color:#e8e8e8}.project-body pre{background:rgba(255,255,255,4%);border:1px solid rgba(255,255,255,8%);border-radius:8px;padding:1.2rem 1.5rem;overflow-x:auto;margin:1.5rem 0;line-height:1.6}.project-body pre code{background:0 0;padding:0;border-radius:0;font-size:.85em;color:#ccc}.project-body blockquote{margin:1.5rem 0;padding:.8rem 1.5rem;border-left:3px solid #ff3c3c;background:rgba(255,255,255,3%);border-radius:0 8px 8px 0;color:#aaa;font-size:.95rem}.project-body blockquote p{margin:0}.project-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.9rem}.project-body thead th{text-align:left;padding:.6rem .8rem;border-bottom:2px solid rgba(255,255,255,.15);color:#fff;font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.project-body tbody td{padding:.5rem .8rem;border-bottom:1px solid rgba(255,255,255,5%);color:#bbb}.project-body tbody tr:hover{background:rgba(255,255,255,3%)}.project-body hr{border:none;height:1px;background:rgba(255,255,255,8%);margin:3rem 0}.project-body ul,.project-body ol{padding-left:1.5rem;margin-bottom:1.2rem}.project-body li{margin-bottom:.4rem}.grafana-embed{margin:2rem 0}.grafana-embed iframe{width:100%;border-radius:8px;border:1px solid rgba(255,255,255,8%)!important}@media(max-width:600px){.centered h1{font-size:2rem}.page-content{margin:2rem auto;padding:0 1.2rem}.project-grid{grid-template-columns:1fr}.article-header h1{font-size:1.6rem}.project-body{font-size:.95rem}.project-body pre{padding:1rem}.project-body table{font-size:.8rem}}