:root{--bg-color:radial-gradient(circle at 20% 20%,#38bdf829,transparent 45%),radial-gradient(circle at 80% 15%,#f472b629,transparent 55%),radial-gradient(circle at 50% 85%,#818cf82e,transparent 50%),#f3f4f6;--text-color:#1f2933;--subtext-color:#4b5563;--card-bg:#fff;--border-color:#e5e7eb;--link-color:#2563eb;--glass-bg:#ffffffd1;--glass-border:#94a3b88c;--transition-speed:.25s}:root[data-theme=dark]{--bg-color:radial-gradient(circle at 18% 18%,#38bdf838,transparent 46%),radial-gradient(circle at 82% 12%,#f472b638,transparent 56%),radial-gradient(circle at 50% 88%,#818cf852,transparent 52%),#050814;--text-color:#e6e6e6;--subtext-color:#b0b0b0;--card-bg:#151821;--border-color:#3a3b3d;--link-color:#60a5fa;--glass-bg:#0f172adb;--glass-border:#94a3b873;--transition-speed:.25s}html{transition:background var(--transition-speed)ease,color var(--transition-speed)ease}body{background:var(--bg-color);min-height:100vh;color:var(--text-color);margin:0}#root{min-height:100vh}.app{max-width:960px;color:var(--text-color);margin:0 auto;padding:24px 16px 40px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.header{justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.logo{color:var(--text-color);font-size:20px;font-weight:700}.nav{gap:16px;display:flex}.nav a{color:var(--subtext-color);transition:color var(--transition-speed);font-size:14px;text-decoration:none}.nav a:hover{color:var(--text-color)}.main{flex-direction:column;gap:32px;display:flex}.hero h1{margin-bottom:8px;font-size:32px}.hero p{color:var(--subtext-color)}.section h2{border-bottom:1px solid var(--border-color);color:var(--text-color);margin-top:8px;margin-bottom:8px;padding-bottom:4px;font-size:24px}.section p{color:var(--subtext-color);font-size:14px}.footer{text-align:center;color:var(--subtext-color);margin-top:40px;font-size:13px}.lang-switch{align-items:center;gap:4px;font-size:12px;display:flex}.lang-switch button{cursor:pointer;color:var(--subtext-color);transition:color var(--transition-speed);background:0 0;border:none;padding:2px 4px}.lang-switch button.active{color:var(--text-color);font-weight:600}.theme-switch{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-color);transition:color var(--transition-speed);margin-left:12px;font-size:16px}.project-card{background:radial-gradient(circle at 0 0,#38bdf8cc,#0000 55%),radial-gradient(circle at 100% 0,#818cf8b3,#0000 55%),radial-gradient(circle at 0 100%,#f472b6b3,#0000 55%);border-radius:16px;margin-bottom:16px;padding:1px;position:relative;overflow:hidden}.project-card:before{content:"";opacity:0;filter:blur(18px);pointer-events:none;background:conic-gradient(from 180deg,#38bdf800,#38bdf8b3,#818cf8cc,#f472b6b3,#38bdf800);transition:opacity .5s,transform .8s;position:absolute;inset:-40%;transform:rotate(0)}.project-card__inner{background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(16px);border-radius:14px;padding:16px 18px;transition:transform .2s ease-out,box-shadow .2s ease-out,border-color .2s ease-out,background .2s ease-out;position:relative;box-shadow:0 10px 30px #0f172a2e}.project-card:hover:before{opacity:1;transform:rotate(20deg)}.project-card:hover .project-card__inner{border-color:var(--link-color);transform:translateY(-4px)scale(1.01);box-shadow:0 18px 45px #0f172a61}.project-card__title{color:var(--text-color);margin-bottom:4px;font-size:18px}.project-card__desc{color:var(--subtext-color);margin-bottom:8px;font-size:14px}.project-card__link{color:var(--link-color);font-size:14px;text-decoration:none}.project-card__link:hover{text-decoration:underline}.back-to-top{border:1px solid var(--glass-border);background:radial-gradient(circle at 30% 20%,#38bdf866,transparent 55%),radial-gradient(circle at 70% 80%,#f472b666,transparent 55%),var(--glass-bg);width:40px;height:40px;color:var(--text-color);-webkit-backdrop-filter:blur(18px);cursor:pointer;z-index:50;opacity:.9;border-radius:999px;justify-content:center;align-items:center;font-size:18px;transition:transform .18s ease-out,box-shadow .18s ease-out,border-color .18s ease-out,opacity .18s ease-out;display:flex;position:fixed;bottom:28px;right:24px;box-shadow:0 10px 30px #0f172a59}.back-to-top:hover{border-color:var(--link-color);opacity:1;transform:translateY(-3px)scale(1.03);box-shadow:0 16px 40px #0f172a8c}.back-to-top:active{transform:translateY(-1px)scale(.98)}.blog-post__content{color:var(--text-color);font-size:14px;line-height:1.8}.blog-post__content h1,.blog-post__content h2,.blog-post__content h3{color:var(--text-color);margin-top:16px;margin-bottom:8px;font-weight:600}.blog-post__content p{color:var(--subtext-color);margin:8px 0}.blog-post__content ul,.blog-post__content ol{margin:8px 0 8px 20px}.blog-post__content li{margin:4px 0}.blog-post__content code{background:#0f172a0f;border-radius:4px;padding:2px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px}.blog-post__content pre code{color:#e5e7eb;background:#0f172ae6;border-radius:8px;padding:12px;display:block;overflow-x:auto}.vinyl{flex-wrap:wrap;gap:32px;max-width:960px;margin:0 auto;padding:24px 0;display:flex}.vinyl-left{flex:320px}.turntable{background:radial-gradient(circle at 30% 30%,#1f2937,#020617);border-radius:24px;justify-content:center;align-items:center;width:260px;height:260px;display:flex;position:relative;box-shadow:0 18px 40px #0009}.record{background:radial-gradient(circle,#111827 0,#020617 60% 100%);border:8px solid #020617;border-radius:999px;justify-content:center;align-items:center;width:180px;height:180px;display:flex;overflow:hidden}.record-cover{object-fit:cover;border-radius:999px;width:70%;height:70%}.record--spinning{animation:3.5s linear infinite record-spin}@keyframes record-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tonearm{transform-origin:100%;background:#020617;border-radius:999px;width:100px;height:6px;transition:transform .5s;position:absolute;top:60px;right:52px;transform:rotate(38deg)}.tonearm:before{content:"";background:radial-gradient(circle,#e5e7eb 0,#cbd5f5 60%,#94a3b8 100%);border-radius:50%;width:18px;height:18px;position:absolute;top:50%;right:-10px;transform:translateY(-50%);box-shadow:0 4px 10px #0f172ab3}.tonearm:after{content:"";background:#e5e7eb;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:-4px;transform:translateY(-50%)}.tonearm--on{transform:rotate(-40deg)}.vinyl-now{color:#e5e7eb;justify-content:space-between;align-items:center;margin-top:14px;font-size:14px;display:flex}.vinyl-title{font-weight:600}.vinyl-artist{color:#9ca3af;font-size:12px}.vinyl-play-btn{cursor:pointer;color:#111827;background:#fff;border:none;border-radius:999px;padding:6px 14px;font-size:13px;box-shadow:0 8px 20px #00000059}.vinyl-right{flex:280px}.vinyl-list-title{color:#e5e7eb;margin-bottom:8px;font-size:14px}.vinyl-list{flex-direction:column;gap:8px;display:flex}.vinyl-item{color:#e5e7eb;cursor:pointer;text-align:left;background:#0f172abf;border:1px solid #0000;border-radius:12px;gap:10px;width:100%;padding:8px 10px;display:flex}.vinyl-item--active{background:#1e40af59;border-color:#818cf8e6}.vinyl-item-cover{object-fit:cover;border-radius:10px;width:40px;height:40px}.vinyl-item-meta{flex-direction:column;justify-content:center;display:flex}.vinyl-item-title{font-size:13px;font-weight:500}.vinyl-item-artist{color:#9ca3af;font-size:12px}@media (max-width:768px){.vinyl{flex-direction:column}}.hero{padding:72px 24px 96px}.hero-intro-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0f172ae6;border:1px solid #94a3ff66;border-radius:20px;max-width:720px;margin:0 auto 40px;padding:24px 28px;box-shadow:0 20px 45px #00000073}.hero-intro-tag{color:#c7d2fe;margin-bottom:10px;font-size:13px;display:inline-block}.hero-intro-title{color:#fff;margin:0 0 12px;font-size:32px;font-weight:700}.hero-intro-desc{color:#d1d5db;margin:4px 0;font-size:15px}.hero-intro-meta{color:#9ca3af;align-items:center;gap:6px;margin-top:14px;font-size:13px;display:flex}.page-transition{animation:.5s fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
