@import"https://fonts.googleapis.com/css?family=Open+Sans:300";*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f0f4ff;--text: #1e293b;--text-secondary: #475569;--accent: #3b82f6;--border: #cbd5e1;--card-hover-shadow: rgba(59, 130, 246, .2)}[data-theme=dark]{--bg: #0f172a;--text: #e2e8f0;--text-secondary: #94a3b8;--accent: #60a5fa;--border: #1e293b;--card-hover-shadow: rgba(96, 165, 250, .2)}body{font-family:Nunito,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-weight:300;background:var(--bg);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:svgjs='http://svgjs.dev/svgjs' width='1440' height='560' preserveAspectRatio='none' viewBox='0 0 1440 560'%3e%3cg mask='url(%26quot%3b%23SvgjsMask1063%26quot%3b)' fill='none'%3e%3crect width='1440' height='560' x='0' y='0' fill='url(%26quot%3b%23SvgjsLinearGradient1064%26quot%3b)'%3e%3c/rect%3e%3cpath d='M1383 369L2371 368' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M956 398L-101 397' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M738 154L89 153' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1181 46L1992 45' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1288 380L624 379' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M275 252L754 251' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M836 174L-147 173' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M142 160L671 159' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1437 246L2002 245' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M643 126L190 125' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M743 466L364 465' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M331 473L1287 472' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M208 205L1282 204' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M265 476L-625 475' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3c/g%3e%3cdefs%3e%3cmask id='SvgjsMask1063'%3e%3crect width='1440' height='560' fill='white'%3e%3c/rect%3e%3c/mask%3e%3clinearGradient x1='15.28%25' y1='139.29%25' x2='84.72%25' y2='-39.29%25' gradientUnits='userSpaceOnUse' id='SvgjsLinearGradient1064'%3e%3cstop stop-color='%23dce7f7' offset='0'%3e%3c/stop%3e%3cstop stop-color='rgba(224%2c 235%2c 250%2c 1)' offset='0.86'%3e%3c/stop%3e%3cstop stop-color='rgba(224%2c 235%2c 250%2c 1)' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient x1='100%25' y1='0%25' x2='0%25' y2='0%25' id='SvgjsLinearGradient1065'%3e%3cstop stop-color='rgba(147%2c 197%2c 253%2c 0)' offset='0'%3e%3c/stop%3e%3cstop stop-color='%2393c5fd' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient x1='0%25' y1='0%25' x2='100%25' y2='0%25' id='SvgjsLinearGradient1066'%3e%3cstop stop-color='rgba(147%2c 197%2c 253%2c 0)' offset='0'%3e%3c/stop%3e%3cstop stop-color='%2393c5fd' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e");background-size:cover;background-attachment:fixed;color:var(--text);line-height:1.6;transition:background .3s,color .3s}[data-theme=dark] body{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' version='1.1' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:svgjs='http://svgjs.dev/svgjs' width='1440' height='560' preserveAspectRatio='none' viewBox='0 0 1440 560'%3e%3cg mask='url(%26quot%3b%23SvgjsMask1063%26quot%3b)' fill='none'%3e%3crect width='1440' height='560' x='0' y='0' fill='url(%26quot%3b%23SvgjsLinearGradient1064%26quot%3b)'%3e%3c/rect%3e%3cpath d='M1383 369L2371 368' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M956 398L-101 397' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M738 154L89 153' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1181 46L1992 45' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1288 380L624 379' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M275 252L754 251' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M836 174L-147 173' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M142 160L671 159' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M1437 246L2002 245' stroke-width='5' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M643 126L190 125' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M743 466L364 465' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1065%26quot%3b)' stroke-linecap='round' class='Left' opacity='0.3'%3e%3c/path%3e%3cpath d='M331 473L1287 472' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M208 205L1282 204' stroke-width='4' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3cpath d='M265 476L-625 475' stroke-width='3' stroke='url(%26quot%3b%23SvgjsLinearGradient1066%26quot%3b)' stroke-linecap='round' class='Right' opacity='0.3'%3e%3c/path%3e%3c/g%3e%3cdefs%3e%3cmask id='SvgjsMask1063'%3e%3crect width='1440' height='560' fill='white'%3e%3c/rect%3e%3c/mask%3e%3clinearGradient x1='15.28%25' y1='139.29%25' x2='84.72%25' y2='-39.29%25' gradientUnits='userSpaceOnUse' id='SvgjsLinearGradient1064'%3e%3cstop stop-color='%230e2a47' offset='0'%3e%3c/stop%3e%3cstop stop-color='rgba(28%2c 48%2c 75%2c 1)' offset='0.86'%3e%3c/stop%3e%3cstop stop-color='rgba(28%2c 48%2c 75%2c 1)' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient x1='100%25' y1='0%25' x2='0%25' y2='0%25' id='SvgjsLinearGradient1065'%3e%3cstop stop-color='rgba(28%2c 83%2c 142%2c 0)' offset='0'%3e%3c/stop%3e%3cstop stop-color='%231c538e' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient x1='0%25' y1='0%25' x2='100%25' y2='0%25' id='SvgjsLinearGradient1066'%3e%3cstop stop-color='rgba(28%2c 83%2c 142%2c 0)' offset='0'%3e%3c/stop%3e%3cstop stop-color='%231c538e' offset='1'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e")}main{max-width:800px;margin:0 auto;padding:4rem 2rem}section{margin-bottom:4rem}h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif;font-weight:300}h1{font-size:2.5rem;margin-bottom:.5rem}h2{font-size:1.5rem;margin-bottom:1.5rem;color:var(--text)}h3{font-size:1.25rem;font-weight:700;margin-bottom:.5rem}p{color:var(--text-secondary);font-size:1.125rem}.subtitle{font-size:1.25rem;color:var(--text-secondary)}.hero{width:100%;height:60vh;min-height:400px;background-image:url(/images/veere_leeg_kwartet_ripley-1600.jpg);background-image:image-set(url(/images/veere_leeg_kwartet_ripley-900.jpg) 1x,url(/images/veere_leeg_kwartet_ripley-1600.jpg) 2x);background-size:cover;background-position:center;background-repeat:no-repeat;display:flex;align-items:center;justify-content:center;position:relative;margin:0}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,#00000026,#0006)}.hero-content{position:relative;z-index:1;text-align:center;color:#fff;padding:2rem}.hero h1,.hero .subtitle{color:#fff;text-shadow:2px 2px 4px rgba(0,0,0,.5)}.project-grid{display:grid;gap:2rem;grid-template-columns:repeat(2,1fr)}@media(max-width:768px){.project-grid{grid-template-columns:1fr}}.project-card{padding:2rem;background:#ffffff4d;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border:1px solid rgba(255,255,255,.5);border-radius:12px;transition:transform .2s,box-shadow .2s;position:relative}[data-theme=dark] .project-card{background:#0f172a66;border:1px solid rgba(255,255,255,.1)}.project-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px var(--card-hover-shadow)}.card-content{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:1rem}.project-meta{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;font-size:.85rem;color:var(--text-secondary)}.project-meta img{height:20px}.project-links{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.project-links .read-more{display:inline-flex;align-items:center;gap:.4rem}.read-more{color:var(--accent);text-decoration:none;font-weight:500;display:inline-block;transition:transform .2s}.read-more:hover{transform:translate(4px)}.gargle-card{overflow:hidden}[data-theme=dark] .gargle-card{background:none;backdrop-filter:none;-webkit-backdrop-filter:none;border:2px solid rgba(255,255,255,.3)}[data-theme=dark] .gargle-card:before{content:"";position:absolute;inset:0;background-image:url(/images/blikje.png);background-size:cover;background-position:center;z-index:0}[data-theme=dark] .gargle-card:after{content:"";position:absolute;inset:0;background:#0f172abf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1}[data-theme=dark] .gargle-card h3,[data-theme=dark] .gargle-card .card-content,[data-theme=dark] .gargle-card .read-more{position:relative;z-index:2;color:#fff}[data-theme=dark] .gargle-card h3{color:#fff}[data-theme=dark] .gargle-card p{color:#ffffffe6}[data-theme=dark] .gargle-card .read-more{color:#93c5fd}.smart-home-card{background:linear-gradient(135deg,#3b82f626,#93c5fd26)}[data-theme=dark] .smart-home-card{background:linear-gradient(135deg,#3b82f633,#60a5fa33)}.oss-card{background:linear-gradient(135deg,#3b82f629,#7dd3fc2e);border:1px solid rgba(59,130,246,.25)}[data-theme=dark] .oss-card{background:linear-gradient(135deg,#1e40af59,#3b82f633);border:1px solid rgba(147,197,253,.2)}.smart-home-card .card-content{-webkit-line-clamp:unset;overflow:visible}.smart-home-card p{margin-bottom:1rem}.tech-stack{display:flex;gap:1.5rem;align-items:center;justify-content:space-around;flex-wrap:wrap;margin-top:1rem}.tech-item{display:flex;align-items:center;justify-content:center;padding:.5rem;background:#e0f2fecc;border-radius:8px;flex:1;min-width:50px;transition:transform .2s,box-shadow .2s;height:40px}[data-theme=dark] .tech-item{background:#e0f2fee6}.tech-item:hover{transform:translateY(-4px);box-shadow:0 4px 12px #00000026}.tech-item img{max-width:100%;max-height:25px;object-fit:contain}.tech-item img.unifi-logo{max-height:18px;width:70px}.terminal-card{grid-column:1 / -1;background:#1e1e1e;border:1px solid #333;padding:0;overflow:hidden}[data-theme=light] .terminal-card{background:#2d2d2d}.terminal-header{background:#323232;padding:.5rem 1rem;display:flex;align-items:center;gap:1rem;border-bottom:1px solid #444}.terminal-buttons{display:flex;gap:.5rem}.terminal-buttons span{width:12px;height:12px;border-radius:50%;display:inline-block}.btn-close{background:#ff5f56}.btn-minimize{background:#ffbd2e}.btn-maximize{background:#27c93f}.terminal-title{color:#8b949e;font-size:.875rem;font-family:Courier New,monospace}.terminal-body{padding:1.5rem;min-height:200px;max-height:300px;overflow-y:auto;font-family:Courier New,monospace;font-size:.9rem;line-height:1.6;color:#c9d1d9}.terminal-body::-webkit-scrollbar{width:8px}.terminal-body::-webkit-scrollbar-track{background:#1e1e1e}.terminal-body::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.terminal-line{margin-bottom:.5rem}.terminal-line .prompt{color:#58a6ff;margin-right:.5rem}.terminal-line .command{color:#7ee787}.terminal-line .response{color:#c9d1d9}.terminal-line .error{color:#ff7b72}.terminal-input-container{padding:1rem 1.5rem;background:#1e1e1e;border-top:1px solid #333;display:flex;align-items:center;gap:.5rem}.terminal-input-container .prompt{color:#58a6ff;font-family:Courier New,monospace;font-size:.9rem}.terminal-input{flex:1;background:transparent;border:none;color:#c9d1d9;font-family:Courier New,monospace;font-size:.9rem;outline:none}.terminal-input::placeholder{color:#6e7681}.cursor{display:inline-block;width:8px;height:1em;background:#58a6ff;animation:blink 1s infinite;margin-left:2px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}#theme-toggle{position:fixed;top:2rem;right:2rem;background:#ffffffe6;border:1px solid var(--border);border-radius:50%;width:48px;height:48px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s;z-index:100;color:var(--text)}[data-theme=dark] #theme-toggle{background:#000c;color:var(--text)}#theme-toggle:hover{transform:scale(1.1);box-shadow:0 4px 12px var(--card-hover-shadow)}#theme-toggle .sun,#theme-toggle .moon,#theme-toggle .auto{display:none}[data-theme-mode=light] #theme-toggle .sun,[data-theme-mode=dark] #theme-toggle .moon,[data-theme-mode=auto] #theme-toggle .auto{display:block}.social-links{display:flex;gap:2rem}.social-links a{color:var(--text);text-decoration:none;font-size:1.5rem;transition:color .2s,transform .2s;display:inline-block}.social-links a:hover{color:var(--accent);transform:translateY(-2px)}footer{width:100%;min-height:400px;background-image:url(/images/Sandro_Botticelli_-_La_nascita_di_Venere-1280.jpg);background-image:image-set(url(/images/Sandro_Botticelli_-_La_nascita_di_Venere-900.jpg) 1x,url(/images/Sandro_Botticelli_-_La_nascita_di_Venere-1280.jpg) 2x);background-size:cover;background-position:center;background-repeat:no-repeat;display:flex;align-items:center;justify-content:center;position:relative;margin:0}footer:before{content:"";position:absolute;inset:0;background:linear-gradient(to top,#0003,#00000014)}.footer-content{position:relative;z-index:1;text-align:center;padding:4rem 2rem}.footer-content h2{color:#fff;margin-bottom:2rem;text-shadow:2px 2px 4px rgba(0,0,0,.5)}footer .social-links a{color:#fff;font-size:2rem}footer .social-links a:hover{color:var(--accent)}@media(max-width:640px){h1{font-size:2rem}main{padding:2rem 1.5rem}.project-grid{grid-template-columns:1fr}#theme-toggle{top:1rem;right:1rem;width:40px;height:40px}.hero{height:50vh;min-height:300px}}.tech-map{padding:5rem 0 6rem;width:100%;max-width:none;margin:0}.tech-map h2{font-size:2rem;margin-bottom:.75rem}.tech-map-subtitle{color:var(--text-secondary);margin-bottom:2rem;font-size:1.1rem}.tech-map-card{padding:2.5rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:20px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 18px 40px #0f172a33}.tech-map-scroll{max-height:620px;overflow-y:auto;overflow-x:visible;scrollbar-width:thin;padding-bottom:6rem}.tech-map-canvas{position:relative;width:100%}.tech-map-svg{display:block;width:100%;height:auto}.tech-map-scroll::-webkit-scrollbar{width:8px}.tech-map-scroll::-webkit-scrollbar-track{background:#0f172a1a;border-radius:999px}.tech-map-scroll::-webkit-scrollbar-thumb{background:#3b82f659;border-radius:999px}[data-theme=dark] .tech-map-scroll::-webkit-scrollbar-track{background:#ffffff14}[data-theme=dark] .tech-map-scroll::-webkit-scrollbar-thumb{background:#60a5fa66}[data-theme=dark] .tech-map-card{background:#0f172a59;border:1px solid rgba(255,255,255,.12);box-shadow:0 18px 40px #00000059}.tech-map-svg{width:100%;height:auto}.tech-map-line{stroke:var(--accent);stroke-width:2;opacity:.25}.tech-map-branch{stroke:var(--accent);stroke-width:1.5;opacity:.35}.tech-map-branch-lang{stroke:#38bdf8}.tech-map-branch-cloud{stroke:#f59e0b}.tech-map-branch-tools{stroke:#a78bfa}.tech-map-branch-platform{stroke:#22c55e}.tech-map-branch-practice{stroke:#f472b6}.tech-map-halo{fill:#ffffff26;opacity:.75;filter:blur(16px);pointer-events:none}.tech-map-hit{fill:transparent;pointer-events:all}.tech-map-node-lang .tech-map-halo{fill:#38bdf84d}.tech-map-node-cloud .tech-map-halo{fill:#f59e0b4d}.tech-map-node-tools .tech-map-halo{fill:#a78bfa4d}.tech-map-node-platform .tech-map-halo{fill:#22c55e4d}.tech-map-node-practice .tech-map-halo{fill:#f472b64d}.tech-map-dot{fill:#ffffffd9;stroke:var(--accent);stroke-width:2;transition:transform .2s ease,stroke .2s ease,fill .2s ease,filter .2s ease;pointer-events:none}.tech-map-node-lang .tech-map-dot{fill:#38bdf833;stroke:#38bdf8}.tech-map-node-cloud .tech-map-dot{fill:#f59e0b33;stroke:#f59e0b}.tech-map-node-tools .tech-map-dot{fill:#a78bfa33;stroke:#a78bfa}.tech-map-node-platform .tech-map-dot{fill:#22c55e33;stroke:#22c55e}.tech-map-node-practice .tech-map-dot{fill:#f472b633;stroke:#f472b6}.tech-map-dot-accent{fill:var(--accent);stroke:#fff6}[data-theme=dark] .tech-map-dot{fill:#0f172ae6}.tech-map-node:hover .tech-map-dot{transform:scale(1.08);filter:drop-shadow(0 0 10px rgba(255,255,255,.25))}.tech-map-node-lang:hover .tech-map-dot{fill:#38bdf8d9;stroke:#38bdf8cc;filter:drop-shadow(0 0 14px rgba(56,189,248,.45))}.tech-map-node-cloud:hover .tech-map-dot{fill:#f59e0bd9;stroke:#f59e0bcc;filter:drop-shadow(0 0 14px rgba(245,158,11,.45))}.tech-map-node-tools:hover .tech-map-dot{fill:#a78bfad9;stroke:#a78bfacc;filter:drop-shadow(0 0 14px rgba(167,139,250,.45))}.tech-map-node-platform:hover .tech-map-dot{fill:#22c55ed9;stroke:#22c55ecc;filter:drop-shadow(0 0 14px rgba(34,197,94,.45))}.tech-map-node-practice:hover .tech-map-dot{fill:#f472b6d9;stroke:#f472b6cc;filter:drop-shadow(0 0 14px rgba(244,114,182,.45))}.tech-map-hotspot{position:absolute;left:var(--x);top:var(--y);width:36px;height:36px;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;pointer-events:auto}.tech-map-tooltip-box{position:absolute;left:50%;top:-14px;transform:translate(-50%,-100%);opacity:0;transition:opacity .2s ease-out;pointer-events:none;will-change:opacity;width:480px;max-width:70vw;background:#0a0d14eb;color:#8dfd7a;font-size:15px;line-height:1.4;padding:.75rem .9rem 1rem;border-radius:10px;border:2px solid rgba(141,253,122,.65);box-shadow:0 0 0 1px #8dfd7a33,0 6px 18px #00000038;font-family:Courier New,monospace}.tech-map-hotspot:hover .tech-map-tooltip-box{opacity:1}.tech-map-hotspot:focus .tech-map-tooltip-box,.tech-map-hotspot:focus-visible .tech-map-tooltip-box,.tech-map-hotspot:active .tech-map-tooltip-box{opacity:1}.tech-map-hotspot:focus-visible{outline:2px solid rgba(141,253,122,.8);outline-offset:6px;border-radius:999px}[data-theme=light] .tech-map-tooltip-box{background:#070a0ee6;color:#8dfd7a;border:2px solid rgba(141,253,122,.65);box-shadow:0 0 0 1px #8dfd7a33,0 6px 18px #00000038}.tech-map-label{font-size:14px;font-weight:600;fill:var(--text)}.tech-map-year{font-size:12px;fill:var(--text-secondary)}.tech-map-core-text{font-size:12px;font-weight:600;fill:#fff;letter-spacing:.08em}@media(max-width:720px){.tech-map{padding:4rem 0 5rem}.tech-map-card{padding:1.5rem}.tech-map-scroll{max-height:none;overflow:visible}.tech-map-label{font-size:12px}.tech-map-year{font-size:11px}.tech-map-tooltip-box{width:260px;max-width:80vw;font-size:13px;padding:.6rem .75rem .85rem}}
