:root{--bg: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #eef2f7;--accent: #0066cc;--accent-hover: #0052a3;--accent-soft: rgba(0, 102, 204, .08);--text: #1a1a1a;--text-secondary: #5f6368;--text-muted: #8a8a8a;--border: #e0e0e0;--border-strong: #c9c9c9;--shadow: rgba(0, 0, 0, .08);--shadow-strong: rgba(0, 0, 0, .14);--success: #28a745;--warning: #ffc107;--error: #dc3545;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--max-width: 1200px;--article-width: 820px;--transition: all .2s ease-in-out}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;font-family:var(--font-sans);background-color:var(--bg);color:var(--text);line-height:1.6}a{color:var(--accent);text-decoration:none;transition:var(--transition)}a:hover{color:var(--accent-hover);text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:var(--spacing-lg);margin-bottom:var(--spacing-md);color:var(--text);line-height:1.25;font-weight:700}h1{font-size:clamp(2.25rem,6vw,5rem);letter-spacing:-.055em}h2{font-size:clamp(1.75rem,3vw,2.5rem);letter-spacing:-.035em}h3{font-size:1.5rem;letter-spacing:-.025em}h4{font-size:1.25rem}h5{font-size:1.1rem}h6{font-size:1rem}p{margin-bottom:var(--spacing-md)}small{color:var(--text-muted)}strong{font-weight:700}header{position:sticky;top:0;z-index:20;background-color:#fffffff5;border-bottom:1px solid var(--border);backdrop-filter:blur(12px)}nav{max-width:var(--max-width);margin:0 auto;padding:1.25rem var(--spacing-lg);display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}nav .brand,.site-title,.logo{font-size:1.25rem;font-weight:800;color:var(--text);letter-spacing:-.03em}nav .links,.nav-links{display:flex;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap}nav a{color:var(--text-secondary);font-weight:600}nav a:hover{color:var(--accent);text-decoration:none}main{width:100%}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--spacing-lg)}.section{padding:var(--spacing-2xl) 0}.section-sm{padding:var(--spacing-xl) 0}.hero{max-width:var(--max-width);margin:0 auto;padding:3rem var(--spacing-lg) .7rem;text-align:left}.hero h1{margin-top:0;margin-bottom:var(--spacing-md);max-width:900px;font-size:clamp(3.25rem,7vw,5.5rem);line-height:1}.hero p{max-width:820px;margin-bottom:var(--spacing-lg);color:var(--text-secondary);font-size:1.25rem;line-height:1.6}.hero-actions{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.hero-split{max-width:var(--max-width);margin:0 auto;padding:3rem var(--spacing-lg) 2.25rem;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:var(--spacing-2xl);align-items:center}.hero-split h1{margin-top:0;margin-bottom:var(--spacing-md);font-size:clamp(3.25rem,7vw,5.5rem);line-height:1}.hero-split p{max-width:760px;margin-bottom:var(--spacing-lg);color:var(--text-secondary);font-size:1.25rem;line-height:1.6}.hero-panel{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-xl);box-shadow:0 8px 24px var(--shadow)}.hero-panel h2,.hero-panel h3{margin-top:0;font-size:1.25rem}.hero-panel ul{margin-left:1rem;margin-bottom:0}.hero-panel li{color:var(--text-secondary)}.card,.project-card{background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:0 2px 8px var(--shadow);transition:var(--transition)}.card:hover,.project-card:hover{box-shadow:0 8px 24px var(--shadow-strong);transform:translateY(-3px)}.card h2,.card h3,.project-card h2,.project-card h3{margin-top:0}.card p:last-child,.project-card p:last-child{margin-bottom:0}.project-card{display:flex;flex-direction:column;gap:var(--spacing-sm)}.project-card h2 a,.project-card h3 a{color:var(--text)}.project-card h2 a:hover,.project-card h3 a:hover{color:var(--accent)}.project-card .meta,.project-meta{color:var(--text-secondary);font-size:.95rem}.project-card .actions,.project-actions{margin-top:auto;padding-top:var(--spacing-md)}.grid,.projects-grid{display:grid;gap:var(--spacing-lg)}@media(min-width:768px){.grid-2,.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.btn,.button,.cta{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:.75rem 1.15rem;background-color:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:var(--radius-md);font-size:1rem;font-weight:700;cursor:pointer;transition:var(--transition);text-decoration:none}.btn:hover,.button:hover,.cta:hover{background-color:var(--accent-hover);border-color:var(--accent-hover);color:#fff;text-decoration:none;transform:translateY(-1px)}.btn-secondary,.button-secondary,.cta-secondary{background-color:var(--bg);color:var(--text);border:1px solid var(--border-strong)}.btn-secondary:hover,.button-secondary:hover,.cta-secondary:hover{background-color:var(--bg-secondary);color:var(--text);border-color:var(--border-strong)}.badge,.tag,.tech{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--accent-soft);color:var(--accent);border:1px solid rgba(0,102,204,.16);border-radius:999px;font-size:.85rem;font-weight:700;margin-right:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.badge-primary{background-color:var(--accent);color:#fff;border-color:var(--accent)}.badge-success{background-color:var(--success);color:#fff;border-color:var(--success)}.badge-warning{background-color:var(--warning);color:#000;border-color:var(--warning)}.badge-error{background-color:var(--error);color:#fff;border-color:var(--error)}code{font-family:var(--font-mono);font-size:.9em;background-color:var(--bg-secondary);color:var(--text);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm)}pre{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-lg);overflow-x:auto;margin-bottom:var(--spacing-lg)}pre code{background-color:transparent;padding:0;border-radius:0}blockquote{border-left:4px solid var(--accent);padding-left:var(--spacing-lg);margin:var(--spacing-lg) 0;color:var(--text-secondary);font-style:italic}ul,ol{margin-left:var(--spacing-lg);margin-bottom:var(--spacing-lg)}li{margin-bottom:var(--spacing-sm)}img{max-width:100%;height:auto}figure{margin:var(--spacing-xl) 0}figcaption{margin-top:var(--spacing-sm);color:var(--text-secondary);font-size:.9rem;text-align:center}.article{max-width:var(--article-width);margin:0 auto;padding:var(--spacing-2xl) var(--spacing-lg)}.article h1{margin-top:0}.article>p:first-of-type{margin-bottom:var(--spacing-lg);color:var(--text-secondary);font-size:1.15rem}.article img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:var(--spacing-lg) 0}.article-meta{color:var(--text-secondary);font-size:.95rem;margin-bottom:var(--spacing-lg)}.article-content{font-size:1.05rem}.article-content h2{margin-top:var(--spacing-2xl)}.article-content h3{margin-top:var(--spacing-xl)}.table,table{width:100%;border-collapse:collapse;margin-bottom:var(--spacing-lg);overflow:hidden}.table th,table th{background-color:var(--bg-secondary);border:1px solid var(--border);padding:var(--spacing-md);text-align:left;font-weight:700}.table td,table td{border:1px solid var(--border);padding:var(--spacing-md)}.table tbody tr:hover,table tbody tr:hover{background-color:var(--bg-secondary)}input,textarea,select{width:100%;font:inherit;color:var(--text);background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem 1rem;transition:var(--transition)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}label{display:block;font-weight:700;margin-bottom:var(--spacing-sm)}.form-group{margin-bottom:var(--spacing-lg)}.featured,.projects-section{background-color:var(--bg-secondary);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:1rem 0 2.5rem}.kicker{color:var(--accent);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:.85rem;margin-bottom:var(--spacing-sm)}.footer,footer{background-color:var(--bg-secondary);border-top:1px solid var(--border);padding:var(--spacing-2xl) var(--spacing-lg);margin-top:var(--spacing-2xl)}.footer-content{max-width:var(--max-width);margin:0 auto;display:grid;gap:var(--spacing-xl)}.footer-section{margin-bottom:var(--spacing-lg)}.footer-section h3{margin-top:0;margin-bottom:var(--spacing-md);font-size:1rem}.footer-links{display:flex;flex-direction:column;gap:var(--spacing-sm)}.footer-links a{color:var(--text-secondary)}.footer-links a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid var(--border);padding-top:var(--spacing-lg);margin-top:var(--spacing-lg);text-align:center;color:var(--text-secondary);font-size:.875rem}.text-center{text-align:center}.text-muted{color:var(--text-secondary)}.text-small{font-size:.9rem}.mt-0{margin-top:0}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-0{margin-bottom:0}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.divider{height:1px;background-color:var(--border);margin:var(--spacing-xl) 0}section{scroll-margin-top:90px}@media(max-width:900px){nav{align-items:flex-start;flex-direction:column}nav .links,.nav-links{gap:var(--spacing-sm)}.hero-split{grid-template-columns:1fr}}@media(max-width:768px){:root{--spacing-3xl: 3rem}nav{padding:var(--spacing-md)}nav .links,.nav-links{flex-direction:row;align-items:flex-start}.container,.hero,.hero-split,.article{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.hero,.hero-split{padding-top:var(--spacing-2xl);padding-bottom:var(--spacing-xl)}.hero h1,.hero-split h1{font-size:clamp(2.75rem,14vw,4rem)}.hero p,.hero-split p{font-size:1.1rem}.grid-2,.grid-3,.grid-4,.projects-grid{grid-template-columns:1fr}.hero-actions{flex-direction:column;align-items:flex-start}.btn,.button,.cta{width:100%}}
