*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:#0d0d1a;width:100%;height:100%;font-family:Courier New,Courier,monospace;overflow:hidden}#game-container{position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}#loading{color:#e0e0e0;letter-spacing:.12em;z-index:200;background:#0d0d1a;justify-content:center;align-items:center;font-family:Courier New,monospace;font-size:1.2rem;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#game-container canvas{display:block;width:100vw!important;height:100vh!important}#ui-overlay{pointer-events:none;z-index:100;position:fixed;top:0;bottom:0;left:0;right:0}.panel{pointer-events:all;opacity:0;background:#000000bf;justify-content:center;align-items:center;transition:opacity .2s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.panel.visible{opacity:1}.panel-box{color:#e0e0e0;background:#1a1a2e;border:3px solid #e94560;border-radius:4px;width:90%;max-width:760px;max-height:85vh;padding:2rem;position:relative;overflow-y:auto;box-shadow:0 0 40px #e945604d}.panel-close{color:#e94560;cursor:pointer;background:0 0;border:2px solid #e94560;border-radius:2px;justify-content:center;align-items:center;width:2rem;height:2rem;font-family:inherit;font-size:1rem;transition:background .15s;display:flex;position:absolute;top:.75rem;right:.75rem}.panel-close:hover{color:#fff;background:#e94560}.panel-title{color:#e94560;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid #e9456044;margin-bottom:1.25rem;padding-bottom:.5rem;font-size:1.4rem}.skill-grid{grid-template-columns:1fr 1fr;gap:.5rem 1.5rem;margin-top:.75rem;display:grid}.skill-item{flex-direction:column;gap:3px;display:flex}.skill-header{color:#aaa;justify-content:space-between;font-size:.75rem;display:flex}.skill-bar{background:#333;border-radius:3px;height:6px;overflow:hidden}.skill-fill{background:linear-gradient(90deg,#e94560,#0f3460);border-radius:3px;height:100%;transition:width .6s}.timeline-item{border-left:2px solid #e94560;margin-bottom:1.25rem;padding-left:1rem}.timeline-item h3{color:#e94560;font-size:.95rem}.timeline-item .meta{color:#888;margin:.2rem 0 .4rem;font-size:.75rem}.timeline-item p{color:#ccc;font-size:.8rem;line-height:1.5}.tag-list{flex-wrap:wrap;gap:.3rem;margin-top:.5rem;display:flex}.tag{color:#e0e0e0;background:#0f3460;border-radius:2px;padding:2px 6px;font-size:.65rem}.project-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.project-card{background:#16213e;border:1px solid #0f3460;border-radius:4px;padding:.9rem;transition:border-color .2s}.project-card:hover{border-color:#e94560}.project-card h3{color:#e94560;margin-bottom:.4rem;font-size:.85rem}.project-card p{color:#aaa;margin-bottom:.6rem;font-size:.75rem;line-height:1.4}.project-links a{color:#4ecdc4;margin-right:.75rem;font-size:.72rem;text-decoration:none}.project-links a:hover{text-decoration:underline}.contact-form{flex-direction:column;gap:.75rem;margin-top:.5rem;display:flex}.contact-form label{color:#888;margin-bottom:2px;font-size:.75rem;display:block}.contact-form input,.contact-form textarea{color:#e0e0e0;background:#16213e;border:1px solid #0f3460;border-radius:3px;outline:none;width:100%;padding:.5rem .7rem;font-family:inherit;font-size:.85rem;transition:border-color .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:#e94560}.contact-form textarea{resize:vertical;min-height:100px}.contact-form button[type=submit]{color:#fff;cursor:pointer;background:#e94560;border:none;border-radius:3px;align-self:flex-end;padding:.6rem 1.5rem;font-family:inherit;font-size:.85rem;transition:background .2s}.contact-form button[type=submit]:hover{background:#c73652}.form-status{text-align:center;border-radius:3px;padding:.4rem;font-size:.8rem}.form-status.success{color:#4caf50;background:#1a3a1a}.form-status.error{color:#f44336;background:#3a1a1a}.repo-list{flex-direction:column;gap:.6rem;display:flex}.repo-item{background:#16213e;border:1px solid #0f3460;border-radius:3px;justify-content:space-between;align-items:center;padding:.6rem .9rem;display:flex}.repo-item a{color:#4ecdc4;font-size:.85rem;text-decoration:none}.repo-item a:hover{text-decoration:underline}.repo-meta{color:#666;font-size:.72rem}#interact-hint{color:#e0e0e0;pointer-events:none;opacity:0;z-index:50;background:#000c;border:1px solid #e94560;border-radius:3px;padding:.4rem 1rem;font-family:Courier New,monospace;font-size:.8rem;transition:opacity .3s;position:fixed;bottom:2rem;left:50%;transform:translate(-50%)}#interact-hint.visible{opacity:1}#controls-hud{color:#ffffff8c;letter-spacing:.04em;pointer-events:none;z-index:50;font-family:Courier New,monospace;font-size:.72rem;position:fixed;bottom:1.1rem;right:1.4rem}#controls-hud .key{color:#ffffffbf;background:#00000073;border:1px solid #ffffff40;border-radius:3px;padding:1px 5px;font-size:.68rem;display:inline-block}.projects-disclaimer{color:#bbb;background:#e9456014;border-left:3px solid #e94560;border-radius:0 3px 3px 0;margin-bottom:1rem;padding:.6rem .9rem;font-size:.78rem;line-height:1.5}.projects-disclaimer strong{color:#e94560;margin-bottom:.25rem;font-size:.8rem;display:block}.lang-grid{flex-direction:column;gap:.6rem;display:flex}.lang-btn{color:#e0e0e0;cursor:pointer;text-align:left;background:#16213e;border:2px solid #0f3460;border-radius:4px;align-items:center;gap:.75rem;padding:.65rem 1rem;font-family:inherit;font-size:.9rem;transition:border-color .15s,background .15s;display:flex}.lang-btn:hover{background:#1e2a4a;border-color:#e94560}.lang-btn.active{background:#0d2233;border-color:#4ecdc4}.lang-flag{font-size:1.3rem}.lang-name{flex:1}.lang-check{color:#4ecdc4;font-weight:700}.toast{color:#fc0;pointer-events:none;opacity:0;z-index:60;white-space:nowrap;background:#3c2805eb;border:1px solid #fc0;border-radius:3px;padding:.5rem 1.2rem;font-family:Courier New,monospace;font-size:.85rem;transition:opacity .3s;position:fixed;bottom:5rem;left:50%;transform:translate(-50%)}.toast.visible{opacity:1}@media (max-width:600px){.skill-grid,.project-grid{grid-template-columns:1fr}.panel-box{padding:1.25rem}#controls-hud{display:none}}#welcome-bubble{z-index:55;pointer-events:none;text-align:center;opacity:1;background:#0a0a1af0;border:2px solid #e94560;border-radius:8px;width:88%;max-width:380px;padding:1rem 1.5rem;font-family:Courier New,monospace;font-size:.81rem;line-height:1.65;transition:opacity .5s;position:fixed;top:16%;left:50%;transform:translate(-50%);box-shadow:0 0 32px #e9456033,0 6px 28px #0000008c}#welcome-bubble:after{content:"";border:6px solid #0000;border-top-color:#e94560;position:absolute;bottom:-11px;left:50%;transform:translate(-50%)}#welcome-bubble strong{color:#e94560;letter-spacing:.04em;margin-bottom:.45rem;font-size:.9rem;display:block}#welcome-bubble p{color:#b8b8c8;margin:0}#welcome-bubble.hidden{opacity:0;pointer-events:none}#collision-flash{pointer-events:none;z-index:75;transition:box-shadow .22s ease-out;position:fixed;top:0;bottom:0;left:0;right:0}#collision-flash.active{transition:box-shadow 40ms ease-in;box-shadow:inset 0 0 90px 18px #e9456085}#mobile-controls{z-index:90;justify-content:space-between;align-items:flex-end;padding:0 1.6rem;display:none;position:fixed;bottom:1.6rem;left:0;right:0}@media (pointer:coarse){#mobile-controls{display:flex}#controls-hud{display:none}}.dpad{grid-template-rows:repeat(3,52px);grid-template-columns:repeat(3,52px);grid-template-areas:".up.""left.right"".down.";gap:3px;display:grid}.dpad-btn{color:#e0e0e0;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#0f0f26d1;border:2px solid #e945608c;border-radius:7px;justify-content:center;align-items:center;font-size:1.1rem;transition:background 80ms;display:flex}.dpad-btn:active{background:#e9456061}.dpad-up{grid-area:up}.dpad-left{grid-area:left}.dpad-right{grid-area:right}.dpad-down{grid-area:down}.dpad-action{color:#e94560;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#0f0f26d1;border:2px solid #e945608c;border-radius:50%;align-self:center;width:68px;height:68px;font-family:Courier New,monospace;font-size:1.2rem;font-weight:700;transition:background 80ms}.dpad-action:active{background:#e9456061}
