*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#111;--card:#1a1a1a;--dark:#0a0a0a;--dark-light:#1a1a1a;--text:#a0a0a8;--text-muted:#777780;--accent:#222;--border:#2a2a2a;--highlight:#6b4e9b;--font-body:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"Fragment Mono",monospace}body{font-family:var(--font-body);background-color:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--accent);border-radius:2px}.card{background:linear-gradient(145deg,#1e1e24,#151518);border-radius:20px;overflow:hidden;border:1px solid #222228}.overlay-backdrop{position:fixed;inset:0;background:rgba(20,20,40,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}body.overlay-open{overflow:hidden;position:fixed;width:100%}.overlay-card{background:var(--card);border-radius:24px;max-width:700px;width:90%;overscroll-behavior:contain;padding:48px;position:relative;animation:slideUp .3s ease;margin:20px 0}.overlay-card,.overlay-card.scrollable{max-height:85vh;overflow-y:auto}.overlay-close{position:absolute;top:20px;right:20px;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--accent);color:var(--text);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.overlay-close:hover{background:#2a2a2a}.slider-container{position:relative;overflow:hidden;flex:1 1}.slider-track{display:flex;transition:transform .4s ease}.slider-item{min-width:100%;padding:24px;cursor:pointer}.slider-nav{gap:12px;padding:12px 0}.slider-btn,.slider-nav{display:flex;align-items:center;justify-content:center}.slider-btn{width:32px;height:32px;border-radius:50%;border:1px solid #333;background:#222;color:var(--text);cursor:pointer;font-size:14px;transition:all .15s}.slider-btn:hover{background:#111}.slider-dots{display:flex;gap:6px}.slider-dot{width:6px;height:6px;border-radius:50%;background:transparent;border:1.5px solid #3a3a3a;transition:all .2s}.slider-dot.active{background:#6b4e9b;border-color:#6b4e9b}.tag{padding:4px 12px;border-radius:12px;font-size:12px;background:transparent;color:#d0d0d8;border:1px solid #6b4e9b}.section-label,.tag{font-family:var(--font-mono)}.section-label{font-size:13px;color:#6b4e9b;letter-spacing:.02em}.footer{margin-top:40px;padding:40px;background:#0a0a0a;border-radius:20px;color:#fbfaf8}.footer a{color:var(--text-muted);text-decoration:none;transition:color .15s}.footer a:hover{color:#fbfaf8}@media (max-width:768px){.bento-bottom,.bento-top{grid-template-columns:1fr!important}.bento-top .card:first-child{height:400px!important}.overlay-card{padding:28px;width:95%;max-height:85vh}.overlay-arrow{display:none!important}.overlay-mobile-nav{display:flex!important}.overlay-card{padding:56px 28px 28px!important}.contact-row{flex-direction:column!important}.slider-dots{display:flex!important}.slider-nav{gap:24px;padding:16px 0}.slider-btn{width:44px!important;height:44px!important;font-size:18px!important;border:1px solid #444!important;background:#222!important}.footer{padding:28px}.footer-inner{flex-direction:column!important;gap:24px}}.swipe-hint{display:none;position:absolute;bottom:80px;left:0;right:0;text-align:center;pointer-events:none;animation:swipeHint 2.5s ease-in-out;animation-fill-mode:forwards;opacity:0;z-index:10}.swipe-hint span{background:hsla(0,0%,100%,.06);color:#999;font-size:13px;font-family:var(--font-mono);padding:8px 16px;border-radius:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@media (max-width:768px){.swipe-hint{display:block}}textarea::-webkit-resizer{background:linear-gradient(135deg,transparent 60%,#2a2a2a 0,#2a2a2a 70%,transparent 0,transparent 80%,#2a2a2a 0);border-radius:0 0 12px 0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes swipeHint{0%{opacity:0;transform:translateX(0)}15%{opacity:1;transform:translateX(0)}30%{opacity:1;transform:translateX(-12px)}45%{opacity:1;transform:translateX(12px)}60%{opacity:1;transform:translateX(0)}85%{opacity:1}to{opacity:0}}