*{box-sizing:border-box}body{font-family:'Inter', system-ui, sans-serif;max-width:720px;margin:clamp(1.5rem, 5vw, 3rem) auto;padding:0 1.5rem;color:#1a1a1a;line-height:1.7;font-size:1.0625rem}a{color:#0066cc;text-decoration:none}a:hover{text-decoration:underline}a[href*="github.com"]::before{content:'';display:inline-block;width:1em;height:1em;margin-right:0.2em;vertical-align:-0.125em;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z'/%3E%3C/svg%3E") no-repeat center;mask-size:contain;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z'/%3E%3C/svg%3E") no-repeat center;-webkit-mask-size:contain}h1{font-size:2rem;margin-bottom:0.25rem;font-weight:600}h2{font-size:1.2rem;font-weight:600;letter-spacing:0.01em}h3{font-size:1rem;font-weight:600}nav{margin-bottom:3rem;font-size:0.9rem;padding-bottom:1rem;border-bottom:1px solid #eee}nav a{margin-right:1rem;text-decoration:none;color:#555;font-weight:500}nav a:hover{color:#0066cc}nav .nav-wordmark{color:#1a1a1a;font-weight:600;font-size:1rem}.project-list{display:flex;flex-direction:column;gap:1.25rem;margin-top:1.5rem}.project-card{border:1px solid #e1e4e8;border-radius:8px;padding:1.25rem 1.5rem;margin-left:-1.5rem;margin-right:-1.5rem;transition:box-shadow 0.15s ease, transform 0.15s ease}.project-card:hover{box-shadow:0 4px 12px rgba(0,0,0,0.08);transform:translateY(-2px)}.project-card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.5rem 1rem;margin-bottom:0.5rem}.project-card-title{display:flex;align-items:center;gap:0.5rem}.project-icon{width:24px;height:24px;border-radius:5px;flex-shrink:0}.project-card h2{margin:0;font-size:1.1rem;font-weight:600}.project-links{display:flex;gap:0.75rem;font-size:0.85rem;white-space:nowrap;flex-shrink:0}.project-tags{margin-bottom:0.6rem}.project-description{margin:0;color:#555;font-size:0.95rem}.tag{display:inline-block;background:#f0f0f0;color:#333;border-radius:3px;padding:0.1rem 0.5rem;font-size:0.8rem;margin-right:0.3rem}.tag[data-tag="C++"]{background:#dbeafe;color:#1e40af}.tag[data-tag="Qt"]{background:#dcfce7;color:#166534}.tag[data-tag="Linux"]{background:#fef3c7;color:#92400e}.tag[data-tag="JavaScript"]{background:#fef9c3;color:#713f12}.tag[data-tag="Web Bluetooth"]{background:#cffafe;color:#164e63}.tag[data-tag="PWA"]{background:#f3e8ff;color:#6b21a8}.back-link{display:inline-block;margin-top:2rem;font-size:0.9rem;color:#555}.back-link:hover{color:#0066cc;text-decoration:none}figure{margin:1.5rem 0}figcaption{margin-top:0.5rem;font-size:0.85rem;color:#666;text-align:center}footer{margin-top:4rem;font-size:0.85rem;color:#888;border-top:1px solid #eee;padding-top:1rem}img{max-width:100%;height:auto;border-radius:3px}img.screenshot{max-width:640px;width:100%;box-shadow:0 3px 6px rgba(0,0,0,0.15)}img.screenshot-diskvu{border:1px solid #ccc}pre,code{font-family:'JetBrains Mono', 'Fira Code', 'SF Mono', ui-monospace, monospace;font-size:0.875rem}pre{background:#f6f8fa;border-radius:6px;padding:1rem;overflow-x:auto;line-height:1.45}code{background:#f0f0f0;border-radius:3px;padding:0.1em 0.3em}pre code{background:none;padding:0}.highlight .c{color:#6a737d;font-style:italic}.highlight .k{color:#d73a49;font-weight:600}.highlight .kc{color:#d73a49;font-weight:600}.highlight .kd{color:#d73a49;font-weight:600}.highlight .kn{color:#d73a49;font-weight:600}.highlight .kp{color:#d73a49;font-weight:600}.highlight .kr{color:#d73a49;font-weight:600}.highlight .kt{color:#d73a49;font-weight:600}.highlight .s{color:#032f62}.highlight .sa{color:#032f62}.highlight .sb{color:#032f62}.highlight .sc{color:#032f62}.highlight .dl{color:#032f62}.highlight .sd{color:#032f62}.highlight .s2{color:#032f62}.highlight .se{color:#032f62}.highlight .sh{color:#032f62}.highlight .si{color:#032f62}.highlight .sx{color:#032f62}.highlight .sr{color:#032f62}.highlight .s1{color:#032f62}.highlight .ss{color:#032f62}.highlight .m{color:#005cc5}.highlight .mb{color:#005cc5}.highlight .mf{color:#005cc5}.highlight .mh{color:#005cc5}.highlight .mi{color:#005cc5}.highlight .il{color:#005cc5}.highlight .mo{color:#005cc5}.highlight .o{color:#d73a49}.highlight .ow{color:#d73a49}.highlight .p{color:#24292e}.highlight .na{color:#6f42c1}.highlight .nc{color:#6f42c1;font-weight:600}.highlight .nd{color:#6f42c1}.highlight .ne{color:#6f42c1;font-weight:600}.highlight .nf{color:#6f42c1}.highlight .nl{color:#6f42c1}.highlight .nn{color:#6f42c1}.highlight .nt{color:#22863a}.highlight .nv{color:#e36209}.highlight .vc{color:#e36209}.highlight .vg{color:#e36209}.highlight .vi{color:#e36209}.highlight .w{color:#6a737d}@media (prefers-color-scheme: dark){body{background:#0d1117;color:#e6edf3}a{color:#58a6ff}nav{border-bottom-color:#30363d}nav a{color:#8b949e}nav a:hover{color:#58a6ff}nav .nav-wordmark{color:#e6edf3}.back-link{color:#8b949e}.tag{background:#21262d;color:#e6edf3}footer{border-top-color:#30363d;color:#8b949e}pre{background:#161b22}code{background:#21262d}img.screenshot{box-shadow:0 3px 6px rgba(0,0,0,0.4)}img.screenshot-diskvu{border-color:#30363d}.project-card{border-color:#30363d}.project-card:hover{box-shadow:0 4px 12px rgba(0,0,0,0.3)}.project-description{color:#8b949e}.tag{background:#21262d;color:#e6edf3}.tag[data-tag="C++"]{background:#1e3a5f;color:#93c5fd}.tag[data-tag="Qt"]{background:#14532d;color:#86efac}.tag[data-tag="Linux"]{background:#451a03;color:#fcd34d}.tag[data-tag="JavaScript"]{background:#422006;color:#fde68a}.tag[data-tag="Web Bluetooth"]{background:#0c3a4a;color:#67e8f9}.tag[data-tag="PWA"]{background:#3b0764;color:#d8b4fe}figcaption{color:#8b949e}.highlight .c{color:#8b949e}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#ff7b72}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{color:#a5d6ff}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo{color:#79c0ff}.highlight .o,.highlight .ow{color:#ff7b72}.highlight .p{color:#e6edf3}.highlight .na,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .nl,.highlight .nn{color:#d2a8ff}.highlight .nt{color:#7ee787}.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:#ffa657}.highlight .w{color:#8b949e}}
