:root{--bg-primary:#0a0a0a;--text-primary:#e0e0e0;--border-primary:#333;--text-secondary:#999;--text-muted:#666;--bg-hover:#1a1a1a;--border-focus:#e0e0e0;--color-error:#ff6b6b;--color-success:#fefca9;--color-info:#4a9eff;--color-warning:#f84;--space-xs:0.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--text-xs:0.75rem;--text-sm:0.85rem;--text-base:1rem;--text-lg:1.1rem;--text-xl:1.5rem;--text-2xl:2rem;--text-3xl:2.5rem}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0a0a;background:var(--bg-primary);color:#e0e0e0;color:var(--text-primary);line-height:1.6;margin:0;padding:0}body,code{font-family:Courier New,monospace}.App{background:var(--bg-primary);color:var(--text-primary);display:flex;flex-direction:column;min-height:100vh}.header{border-bottom:1px solid var(--border-primary);padding:var(--space-xl) var(--space-sm);text-align:center}.logo{color:var(--text-primary);cursor:pointer;font-family:Courier New,monospace;font-size:var(--text-base);line-height:1.2;margin:0 auto var(--space-sm) auto;transition:color .2s ease;-webkit-user-select:none;user-select:none}.logo:hover,.tagline{color:var(--text-secondary)}.tagline{font-size:var(--text-sm);margin:0;text-transform:lowercase}.main-content{flex:1 1;margin:0 auto;max-width:1200px;padding:var(--space-xl) var(--space-sm);width:100%}.intro{margin-bottom:var(--space-xl);text-align:center}.intro-text{border:1px solid var(--border-primary);color:var(--text-secondary);display:inline-block;font-size:var(--text-lg);margin:0;padding:var(--space-sm)}.projects-grid{grid-gap:var(--space-xl);display:grid;gap:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));justify-items:center;margin:var(--space-xl) 0;transition:all .6s cubic-bezier(.68,-.55,.265,1.55)}.App.puzzle-solved .projects-grid{gap:calc(var(--space-xl)*1.2)}.App.puzzle-solved .intro-text{animation:puzzleSolvedPulse 2s ease-in-out infinite;border-color:var(--color-success);color:var(--color-success)}@keyframes puzzleSolvedPulse{0%,to{box-shadow:0 0 0 #4f46}50%{box-shadow:0 0 20px #4f46}}.footer{border-top:1px solid var(--border-primary);margin-top:auto;padding:var(--space-xl) var(--space-sm);text-align:center}.footer-art{color:var(--text-muted);font-family:Courier New,monospace;font-size:var(--text-sm);line-height:1.2;margin:0}.password-overlay{align-items:center;animation:fadeIn .2s ease;background:#000c;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.password-popup{animation:popupSlideIn .3s cubic-bezier(.68,-.55,.265,1.55);background:var(--bg-primary);border:2px solid var(--text-primary);max-width:400px;padding:var(--space-xl);width:90%}.password-popup-title{line-height:1.2;margin:0 0 var(--space-lg) 0;text-align:center}.password-input,.password-popup-title{color:var(--text-primary);font-family:Courier New,monospace;font-size:var(--text-base)}.password-input{background:var(--bg-primary);border:1px solid var(--border-primary);box-sizing:border-box;margin-bottom:var(--space-md);padding:var(--space-sm);width:100%}.password-input:focus{border-color:var(--text-primary);outline:none}.password-input::placeholder{color:var(--text-muted)}.password-error{animation:shake .3s ease;color:#f44;color:var(--color-error,#f44);font-size:var(--text-sm);margin-bottom:var(--space-md);text-align:center}.password-buttons{display:flex;gap:var(--space-sm);justify-content:center}.password-btn{background:var(--bg-primary);border:1px solid var(--border-primary);color:var(--text-primary);cursor:pointer;font-family:Courier New,monospace;font-size:var(--text-base);padding:var(--space-sm);transition:all .2s ease}.password-btn:hover{background:var(--text-primary);border-color:var(--text-primary);color:var(--bg-primary)}@keyframes popupSlideIn{0%{opacity:0;transform:scale(.8) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-10px)}75%{transform:translateX(10px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.App{animation:fadeIn .3s ease}@media (max-width:768px){.header{padding:var(--space-lg) var(--space-sm)}.logo{font-size:var(--text-sm)}.tagline{font-size:var(--text-xs)}.main-content{padding:var(--space-lg) var(--space-sm)}.intro-text{font-size:var(--text-base)}.projects-grid{gap:var(--space-lg);grid-template-columns:1fr}.footer{padding:var(--space-lg) var(--space-sm)}.footer-art{font-size:var(--text-xs)}}.tile-container{align-items:center;cursor:pointer;display:flex;flex-direction:column;gap:var(--space-sm);position:relative;transform-origin:center;transition:all .6s cubic-bezier(.68,-.55,.265,1.55)}@keyframes slideIn{0%{opacity:0;transform:translateY(30px) rotate(-5deg)}to{opacity:1;transform:translateY(0) rotate(0deg)}}.tile-container{animation:slideIn .6s ease-out;animation-delay:calc(var(--tile-index)*.1s);animation-fill-mode:both}.tile-container.active{transform:scale(1.05) rotate(20deg);z-index:10}.tile-container.solved{transform:scale(1.02) rotate(0deg);z-index:5}.tile-container.solved:hover{transform:scale(1.05) rotate(0deg)}.tile{align-items:center;background:var(--bg-primary);border:2px solid var(--border-primary);display:flex;height:280px;justify-content:center;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.68,-.55,.265,1.55);width:280px}.tile-container:hover .tile{background:var(--bg-hover);border-color:var(--text-secondary)}.tile-container.active .tile{background:var(--bg-hover);border-color:var(--text-primary);box-shadow:0 0 20px #e0e0e01a}.tile-container.solved .tile{background:#ffec3d08;border-color:var(--color-success)}.tile-corners{height:100%;pointer-events:none;position:absolute;width:100%}.corner{color:var(--text-muted);font-family:Courier New,monospace;font-size:var(--text-xl);opacity:.3;position:absolute;transition:all .4s ease}.tile-container:hover .corner{color:var(--text-secondary);opacity:.6}.tile-container.solved .corner{color:var(--color-success);opacity:1}.corner.top-left{animation:pulseCornerTL 5s ease-in-out infinite;left:-2px;top:-2px}.corner.top-right{animation:pulseCornerTR 5s ease-in-out infinite;animation-delay:.5s;right:-2px;top:-2px}.corner.bottom-left{animation:pulseCornerBL 5s ease-in-out infinite;animation-delay:1s;bottom:-2px;left:-2px}.corner.bottom-right{animation:pulseCornerBR 5s ease-in-out infinite;animation-delay:1.5s;bottom:-2px;right:-2px}@keyframes pulseCornerTL{0%,to{transform:translate(0)}50%{transform:translate(-5px,-5px)}}@keyframes pulseCornerTR{0%,to{transform:translate(0)}50%{transform:translate(5px,-5px)}}@keyframes pulseCornerBL{0%,to{transform:translate(0)}50%{transform:translate(-5px,5px)}}@keyframes pulseCornerBR{0%,to{transform:translate(0)}50%{transform:translate(5px,5px)}}.tile-edges{height:100%;pointer-events:none;position:absolute;width:100%}.edge{background:var(--border-primary);position:absolute;transition:all .4s ease}.edge.top{top:0}.edge.bottom,.edge.top{height:1px;left:0;transform-origin:center;width:100%}.edge.bottom{bottom:0}.edge.left{left:0}.edge.left,.edge.right{height:100%;top:0;transform-origin:center;width:1px}.edge.right{right:0}.tile-container.active .edge{background:var(--text-primary);rotate:20deg}.tile-container.solved .edge{background:var(--color-success)}.tile-content{padding:var(--space-md);text-align:center;transition:transform .4s ease;z-index:2}.tile-container.active .tile-content{transform:scale(1.05)}.tile-title{color:var(--text-primary);font-family:Courier New,monospace;font-size:var(--text-base);line-height:1.3;margin:0 0 var(--space-sm) 0;transition:color .3s ease;white-space:pre}.tile-container.solved .tile-title{color:var(--color-success)}.tile-description{color:var(--text-secondary);font-size:var(--text-sm);line-height:1.4;margin:var(--space-sm) 0;transition:color .3s ease}.tile-container:hover .tile-description{color:var(--text-primary)}.tile-hint{color:var(--text-muted);display:block;font-size:var(--text-xs);margin-top:var(--space-sm);transition:color .3s ease}.tile-container:hover .tile-hint{color:var(--text-secondary)}.tile-container.solved .tile-hint{color:var(--color-success)}.solve-indicator{animation:checkmarkAppear .5s cubic-bezier(.68,-.55,.265,1.55);position:absolute;right:10px;top:10px;z-index:3}@keyframes checkmarkAppear{0%{opacity:0;transform:scale(0) rotate(-180deg)}to{opacity:1;transform:scale(1) rotate(0deg)}}.checkmark{animation:checkmarkPulse 2s ease-in-out infinite;color:var(--color-success);font-size:var(--text-xl);text-shadow:0 0 10px #fff35180}@keyframes checkmarkPulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.tile-label{border:1px solid var(--border-primary);color:var(--text-secondary);font-family:Courier New,monospace;font-size:var(--text-sm);min-width:200px;overflow:hidden;padding:var(--space-xs) var(--space-sm);position:relative;text-align:center;transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.tile-label:before{background:linear-gradient(90deg,#0000,#e0e0e01a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.tile-container:hover .tile-label:before{left:100%}.tile-container:hover .tile-label{border-color:var(--text-secondary);color:var(--text-primary);transform:translateY(-2px)}.tile-container.solved .tile-label{border-color:var(--color-success);box-shadow:0 0 10px #4f43;color:var(--color-success)}@media (max-width:768px){.tile{height:240px;width:240px}.tile-title{font-size:var(--text-sm)}.tile-description,.tile-label{font-size:var(--text-xs)}.tile-label{min-width:160px}.corner{font-size:var(--text-lg)}}
/*# sourceMappingURL=main.98801509.css.map*/