@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;1,9..144,500&display=swap";.header{z-index:50;border-bottom:1px solid var(--rule);-webkit-backdrop-filter:blur(10px);background:#f2ede3eb;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;top:0}.brand{letter-spacing:-.01em;color:var(--ink);align-items:center;gap:.75rem;font-size:1.05rem;font-weight:600;text-decoration:none;display:flex}.brand-seal{border:1.5px solid var(--ink);background:var(--paper-warm);border-radius:50%;flex-shrink:0;place-items:center;width:36px;height:36px;display:grid}.brand-tag{text-transform:uppercase;letter-spacing:.2em;color:var(--ink-muted);border-left:1px solid var(--rule);margin-left:.5rem;padding-left:.75rem;font-family:IBM Plex Mono,monospace;font-size:.7rem;display:none}@media (width>=768px){.brand-tag{display:inline}}.nav{align-items:center;gap:.25rem;display:flex}.nav-link{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:.5rem .9rem;font-family:inherit;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .15s,background .15s}.nav-link:hover{background:var(--paper-deep);color:var(--ink)}.lang-switch{border-left:1px solid var(--rule);margin-left:.6rem;padding-left:.75rem;font-family:IBM Plex Mono,monospace;font-size:.75rem;display:flex}.lang-switch button{color:var(--ink-dim);cursor:pointer;letter-spacing:.05em;background:0 0;border:none;padding:.25rem .5rem;font-family:inherit;font-weight:600}.lang-switch button.active{color:var(--ink);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--copper);text-decoration-color:var(--copper)}.header-kofi{border:1px solid var(--rule);width:30px;height:30px;color:var(--copper);background:var(--paper);border-radius:3px;justify-content:center;align-items:center;margin-left:.5rem;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:flex}.header-kofi:hover{background:var(--copper-soft);border-color:var(--copper);transform:translateY(-1px)}.header-cta{background:var(--ink);color:var(--paper);border-radius:3px;align-items:center;gap:.5rem;margin-left:.5rem;padding:.55rem 1rem;font-size:.88rem;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.header-cta:hover,.header-cta.active{background:var(--volt)}.hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:6px;display:none}.hamburger span{background:var(--ink);border-radius:1px;width:22px;height:2px;transition:all .2s;display:block}.mobile-menu{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule);z-index:100;background:#f2ede3f7;flex-direction:column;gap:.25rem;padding:1rem;display:flex;position:absolute;top:100%;left:0;right:0}.mobile-menu button,.mobile-menu a{cursor:pointer;color:var(--ink);text-align:left;background:0 0;border:none;border-radius:3px;padding:.75rem 1rem;font-family:inherit;font-size:.95rem;font-weight:500;text-decoration:none}.mobile-menu button:hover,.mobile-menu a:hover{background:var(--paper-deep)}.mobile-lang{border-top:1px solid var(--rule);gap:.5rem;margin-top:.5rem;padding:.5rem 1rem;font-family:IBM Plex Mono,monospace;display:flex}.mobile-lang button{padding:.35rem .75rem!important;font-size:.85rem!important}.mobile-lang button.active{color:var(--copper)!important}@media (width<=1024px){.nav{display:none}.hamburger{display:flex}.header{padding:.75rem 1.25rem}}.footer{background:var(--paper);border-top:1px solid var(--ink);z-index:1;padding:3.5rem 0 2rem;position:relative}.footer-grid{border-bottom:1px solid var(--rule);grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;padding-bottom:2rem;display:grid}.footer-seal{border:1.5px solid var(--ink);background:var(--paper-warm);border-radius:50%;flex-shrink:0;place-items:center;width:36px;height:36px;margin-right:.5rem;display:grid}.brand{color:var(--ink);align-items:center;font-size:1rem;font-weight:600;display:flex}.footer-brand-desc{color:var(--ink-muted);max-width:36ch;margin-top:.25rem;font-size:.92rem}.footer h5{text-transform:uppercase;letter-spacing:.2em;color:var(--copper);margin-bottom:1.1rem;font-family:IBM Plex Mono,monospace;font-size:.72rem}.footer ul{flex-direction:column;gap:.6rem;list-style:none;display:flex}.footer ul a{color:var(--ink);border-bottom:1px solid #0000;padding-bottom:2px;font-size:.93rem;text-decoration:none;transition:border-color .15s}.footer ul a:hover{border-bottom-color:var(--copper)}.footer-foot{color:var(--ink-dim);letter-spacing:.05em;justify-content:space-between;align-items:center;padding-top:1.5rem;font-family:IBM Plex Mono,monospace;font-size:.78rem;display:flex}.footer-author{letter-spacing:.04em;color:var(--ink-dim);border-bottom:1px solid #0000;align-items:center;gap:.4rem;margin-top:.9rem;font-family:IBM Plex Mono,monospace;font-size:.72rem;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.footer-author:hover{color:var(--copper);border-bottom-color:var(--copper)}.footer-kofi{color:var(--copper);letter-spacing:.05em;font-family:IBM Plex Mono,monospace;font-size:.78rem;text-decoration:none;transition:opacity .15s}.footer-kofi:hover{opacity:.75}@media (width<=1024px){.footer-grid{grid-template-columns:1fr 1fr;gap:2rem}}@media (width<=560px){.footer-grid{grid-template-columns:1fr}}.chatbot-fab{z-index:1000;border:2px solid var(--ink);background:var(--paper-warm);width:52px;height:52px;color:var(--ink);cursor:pointer;box-shadow:3px 3px 0 var(--ink);border-radius:50%;justify-content:center;align-items:center;transition:transform .15s,box-shadow .15s,background .15s;display:flex;position:fixed;bottom:1.75rem;right:1.75rem}.chatbot-fab:hover{background:var(--paper);box-shadow:4px 4px 0 var(--ink);transform:translate(-1px,-1px)}.chatbot-fab.active{background:var(--ink);color:var(--paper);box-shadow:2px 2px 0 var(--copper)}.chatbot-fab-icon{justify-content:center;align-items:center;display:flex}.chatbot-fab-icon.rotated{transition:transform .2s}.chatbot-badge{background:var(--copper);border:2px solid var(--paper-warm);border-radius:50%;width:10px;height:10px;position:absolute;top:4px;right:4px}.chatbot-panel{z-index:999;border:1.5px solid var(--ink);background:var(--paper-warm);width:360px;min-height:240px;max-height:520px;box-shadow:4px 4px 0 var(--ink);opacity:0;pointer-events:none;flex-direction:column;transition:opacity .2s,transform .2s;display:flex;position:fixed;bottom:5.5rem;right:1.75rem;transform:translateY(16px)scale(.97)}.chatbot-panel.open{opacity:1;pointer-events:all;transform:translateY(0)scale(1)}.chatbot-header{border-bottom:1px solid var(--ink);background:var(--paper);flex-shrink:0;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.chatbot-header-info{align-items:center;gap:.65rem;display:flex}.chatbot-title{color:var(--ink);font-size:.9rem;font-weight:600;line-height:1.2}.chatbot-subtitle{color:var(--copper);text-transform:uppercase;letter-spacing:.18em;font-size:.62rem}.chatbot-close{cursor:pointer;color:var(--ink-dim);background:0 0;border:none;padding:.2rem .4rem;font-size:.85rem;line-height:1;transition:color .12s}.chatbot-close:hover{color:var(--ink)}.chatbot-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:.65rem;padding:1rem .9rem .5rem;display:flex;overflow:hidden auto}.chatbot-messages::-webkit-scrollbar{width:4px}.chatbot-messages::-webkit-scrollbar-thumb{background:var(--rule);border-radius:2px}.chat-msg{display:flex}.chat-msg--bot{justify-content:flex-start}.chat-msg--user{justify-content:flex-end}.chat-bubble{border:1px solid var(--rule);border-radius:2px;max-width:84%;padding:.55rem .8rem;font-size:.875rem;line-height:1.55}.chat-msg--bot .chat-bubble{background:var(--paper);color:var(--ink-soft);border-color:var(--rule);border-left:3px solid var(--copper)}.chat-msg--user .chat-bubble{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chat-link{color:var(--copper);border-bottom:1px solid var(--copper);margin-top:.45rem;font-family:IBM Plex Mono,monospace;font-size:.75rem;text-decoration:none;transition:opacity .12s;display:inline-block}.chat-link:hover{opacity:.75}.chat-typing{align-items:center;gap:4px;padding:2px 0;display:flex}.chat-typing span{background:var(--ink-dim);border-radius:50%;width:6px;height:6px;animation:1.1s ease-in-out infinite chatBounce}.chat-typing span:first-child{animation-delay:0s}.chat-typing span:nth-child(2){animation-delay:.18s}.chat-typing span:nth-child(3){animation-delay:.36s}@keyframes chatBounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.chat-chips{flex-wrap:wrap;gap:.4rem;padding-top:.25rem;display:flex}.chat-chip{border:1px solid var(--rule);background:var(--paper-warm);color:var(--ink-muted);cursor:pointer;white-space:nowrap;border-radius:12px;padding:.28rem .6rem;font-family:inherit;font-size:.78rem;transition:background .1s,color .1s,border-color .1s}.chat-chip:hover{background:var(--paper);color:var(--ink);border-color:var(--copper)}.chatbot-input-row{border-top:1px solid var(--rule);background:var(--paper);flex-shrink:0;align-items:center;gap:.4rem;padding:.6rem .8rem;display:flex}.chatbot-input{color:var(--ink);background:var(--paper-warm);border:1px solid var(--rule);border-radius:2px;outline:none;flex:1;padding:.45rem .65rem;font-family:inherit;font-size:.875rem;transition:border-color .15s}.chatbot-input:focus{border-color:var(--ink)}.chatbot-input::placeholder{color:var(--ink-dim)}.chatbot-send{border:1px solid var(--ink);background:var(--ink);width:34px;height:34px;color:var(--paper);cursor:pointer;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s,opacity .12s;display:flex}.chatbot-send:hover:not(:disabled){background:var(--copper);border-color:var(--copper)}.chatbot-send:disabled{opacity:.35;cursor:not-allowed}@media (width<=480px){.chatbot-panel{width:auto;max-height:65vh;bottom:5rem;left:.75rem;right:.75rem}.chatbot-fab{bottom:1.25rem;right:1.25rem}}.cookie-banner{z-index:890;background:var(--ink);color:var(--paper);border-top:1px solid #ffffff1a;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;padding:.65rem 1.5rem;animation:.3s bannerSlide;display:flex;position:fixed;bottom:0;left:0;right:0}@keyframes bannerSlide{0%{transform:translateY(100%)}to{transform:translateY(0)}}.cookie-text{color:#f2ede3cc;font-size:.82rem;line-height:1.4}.cookie-btn{background:var(--copper);color:var(--paper);cursor:pointer;border:none;border-radius:2px;flex-shrink:0;padding:.3rem .9rem;font-family:inherit;font-size:.8rem;font-weight:600;transition:opacity .15s}.cookie-btn:hover{opacity:.85}@media (width<=560px){.cookie-banner{padding:.75rem 1rem}}:root{--paper:#f2ede3;--paper-warm:#ede6d7;--paper-deep:#e3dac6;--ink:#1a1a1a;--ink-soft:#2c2c2c;--ink-muted:#5a5246;--ink-dim:#8a8170;--rule:#c8bfa8;--rule-soft:#d9d1bc;--volt:#1f4bd8;--volt-soft:#dce3fa;--copper:#b4531a;--copper-soft:#f3d8c2;--crimson:#b8223c;--moss:#3f6b3a}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);background-image:linear-gradient(var(--rule-soft) 1px, transparent 1px), linear-gradient(90deg, var(--rule-soft) 1px, transparent 1px);background-position:0 0;background-size:32px 32px;min-height:100vh;font-family:Space Grotesk,sans-serif;line-height:1.55;overflow-x:hidden}body:before{content:"";background:radial-gradient(ellipse at 50% 0%, #f2ede300 0%, var(--paper) 65%);pointer-events:none;z-index:0;position:fixed;inset:0}main,header,footer{z-index:1;position:relative}.mono{font-family:IBM Plex Mono,monospace}.serif{font-family:Fraunces,serif;font-style:italic;font-weight:500}::selection{background:var(--volt);color:var(--paper)}:focus-visible{outline:2px solid var(--volt);outline-offset:3px;border-radius:2px}.wrap{max-width:1240px;margin:0 auto;padding:0 2rem}.section{padding:6rem 0;position:relative}.section+.section{border-top:1px solid var(--rule)}.eyebrow{text-transform:uppercase;letter-spacing:.25em;color:var(--copper);align-items:center;gap:.75rem;margin-bottom:1rem;font-family:IBM Plex Mono,monospace;font-size:.72rem;display:flex}.eyebrow:before{content:"";background:var(--copper);flex-shrink:0;width:24px;height:1px}.eyebrow .num{color:var(--ink-dim);border:1px solid var(--rule);border-radius:2px;padding:.1rem .45rem;font-weight:500}h2.heading{letter-spacing:-.025em;text-wrap:balance;max-width:22ch;margin-bottom:1rem;font-size:clamp(2rem,4vw,2.9rem);font-weight:500;line-height:1.05}h2.heading .serif-em{color:var(--volt);font-family:Fraunces,serif;font-style:italic;font-weight:400}.lede{color:var(--ink-muted);text-wrap:pretty;max-width:56ch;font-size:1.1rem;line-height:1.5}.btn{cursor:pointer;border:none;border-radius:3px;align-items:center;gap:.5rem;padding:.85rem 1.4rem;font-family:inherit;font-size:.95rem;font-weight:500;text-decoration:none;transition:transform .1s,background .15s,color .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--volt)}.btn-ghost{color:var(--ink);border:1px solid var(--ink);background:0 0}.btn-ghost:hover{background:var(--ink);color:var(--paper)}.tag{border:1px solid var(--rule);color:var(--ink-muted);background:var(--paper);border-radius:2px;padding:.2rem .5rem;font-family:IBM Plex Mono,monospace;font-size:.72rem}.wire{stroke:var(--ink);stroke-width:1.5px;fill:none}.wire-in{stroke:var(--volt);stroke-width:2px;fill:none}.wire-out{stroke:var(--copper);stroke-width:2px;fill:none}.component{stroke:var(--ink);stroke-width:1.5px;fill:var(--paper)}.slabel{fill:var(--ink);font-family:IBM Plex Mono,monospace;font-size:12px}.sval{fill:var(--volt);font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500}.svout{fill:var(--copper);font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1024px){.section{padding:4rem 0}.wrap{padding:0 1.25rem}}@media (width<=560px){.wrap{padding:0 1rem}}
