.photos-grid-container{text-align:center;max-width:100%;width:100%;margin:0 auto}.photos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-top:2rem}.photo-placeholder{width:100%;aspect-ratio:1;border:2px solid transparent;background-color:#f5f5f5;animation:rippleOutline 1s ease-out infinite;opacity:0}@keyframes rippleOutline{0%{border-color:transparent;opacity:0}20%{border-color:#ccc;opacity:1}40%{border-color:transparent;opacity:0}}.photo-placeholder{animation:rippleOutline 5s ease-in-out infinite}.photo-thumbnail{position:relative;cursor:pointer;aspect-ratio:1 / 1;overflow:hidden;border-radius:0}.photo-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.photo-thumbnail:hover img{transform:scale(1)}.photo-date-overlay{position:absolute;bottom:0;left:0;width:100%;background:#f0f0f0;color:#333;font-size:.8rem;text-align:center;opacity:0;transition:opacity 0s;min-height:1.25rem}.photo-thumbnail:hover .photo-date-overlay{opacity:.9}.photo-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;align-items:center;justify-content:center;z-index:11}.photo-modal-content{position:relative;width:80vw;max-height:80vh;display:flex;flex-direction:column;align-items:center}.modal-image{height:70vh;max-height:calc(80vh - 6rem);width:auto;max-width:90vw;object-fit:contain;display:block}.photo-info-bar{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:800px;height:4rem;padding-top:2rem;box-sizing:border-box;color:#fff;font-size:1rem}.photo-modal-info{color:#f0f0f0;font-size:1rem;margin-top:1rem;text-align:center;flex:1}.modal-nav{background:transparent;border:none;color:#f0f0f0;width:3rem;height:3rem;font-size:2rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:Fira Code,monospace;cursor:pointer;z-index:11}.modal-nav:hover{opacity:.5;transition:transform 0s}.modal-nav.left{padding-right:1rem}.modal-nav.right{padding-left:1rem}.repo-contributions{margin-top:1.5rem}.contribution-grid-label{font-size:.9rem;margin-bottom:.5rem;color:#666}.contribution-grid-label a{text-decoration:none;color:inherit}.contribution-grid-label a:hover{color:#d36d23}.contribution-grid{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:2px}.contribution-square{width:100%;height:10px;border-radius:2px;background-color:#eee;transition:background-color 1s ease}.loading .contribution-square{background-color:#eee;animation:ripple 1.2s infinite ease-in-out;opacity:.2}@keyframes ripple{0%,to{opacity:1}50%{opacity:.2}}.projects-list{padding-top:2rem;max-width:800px;margin:0 auto}.project-title a{text-decoration:none;color:inherit}.project-title a:hover{color:#d36d23}.project-card{background:#f8f8f8;border-radius:1rem;padding:.5rem 2.5rem 1.5rem;margin-bottom:2rem;box-shadow:0 2px 8px #0000001a}.project-description{margin-top:1rem;line-height:1.6}.project-tags{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}.project-tags span{background:#e0e0e0;padding:.25rem .75rem;border-radius:1rem;font-size:.8rem}.project-image{margin-top:1.5rem;display:flex;justify-content:center;align-items:center}.project-image img{max-width:100%;height:auto;display:block;margin:0 auto;border-radius:1rem;box-shadow:0 2px 8px #0000001a}.stickers{margin-top:1.5rem;display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap}.stickers img{filter:drop-shadow(2px 2px 1px rgba(0,0,0,.3));max-width:80px}.about-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:2rem;max-width:1000px;margin:0 auto;margin-top:2rem}.about-text{flex:1;align-items:center}.about-text p{font-size:1.1rem;line-height:1.6;color:#333}.social-links{margin-top:1.5rem}.social-links a{margin-right:1rem;font-size:1.6rem;color:#d36d23;transition:color .3s ease}.social-links a:hover{color:#a34f19}.about-photo{flex:1;text-align:right}.about-photo img{max-width:100%;height:auto;box-shadow:0 0 10px #0000001a}@media (max-width: 768px){.about-container{flex-direction:column;text-align:center}.about-photo{text-align:center}.about-photo img{max-width:80%}}.sticker-canvas-container{margin:2rem 0rem;display:flex;justify-content:center;align-items:center;max-height:65vh;overflow:hidden;height:100vh}.sticker-button{display:block;margin:0 auto;padding:10px 24px;background-color:#d36d23;color:#fff;border:none;border-radius:20px;font-size:16px;cursor:pointer}.sticker-button:hover{background-color:#b35c1e}.sticker-button:disabled{background-color:#b35c1e;cursor:default}.sticker-button--secondary{width:80px;padding:.5rem 1rem;font-size:.9rem;margin-left:.5rem}.buttons-container{margin-top:1rem;display:flex}.buttons-container input{padding:.5rem 1rem;border-radius:30px;border:1px solid #ccc;font-size:.9rem;box-sizing:border-box;width:240px}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;justify-content:center;align-items:center;z-index:11}.modal-content{background:#f0f0f0;padding:20px;border-radius:12px;text-align:center;max-width:350px;max-height:95vh;overflow-y:auto}.modal-content h2{margin:0rem auto}.modal-toolbar{display:flex;justify-content:space-between;margin:1rem 0rem}.draw-canvas-container{display:flex;justify-content:center;align-items:center;position:relative}.draw-canvas{border-radius:12px;cursor:crosshair;box-shadow:0 4px 6px #0000000d}.sticker-canvas-container{position:relative}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;justify-content:center;align-items:center;z-index:10}.spinner{width:40px;height:40px;border:5px solid #ccc;border-top-color:#d36d23;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.navbar{display:flex;justify-content:space-between;align-items:center;font-family:Fira Code,monospace;font-size:1.8rem;color:#333;background:#f0f0f0;padding-left:1rem;padding-right:1rem;padding-top:.2rem;border-bottom:1px solid #333;position:sticky;top:0;z-index:10}.logo-container{display:inline-flex;align-items:center;font-family:Fira Code,monospace;font-size:1.5rem;color:#333;text-decoration:none;cursor:pointer;position:relative}.logo-initial{display:inline-block;transform:rotate(-90deg);transition:transform .2s ease-in-out}.logo-cursor{position:absolute;left:1ch;animation:blink 1.2s steps(1,start) infinite;transition:transform .2s ease}.logo-rest{display:inline-block;overflow:hidden;max-width:0;opacity:1;white-space:nowrap;transition:max-width .15s ease}.logo-container.hovered .logo-rest{transition:max-width .6s ease}.logo-container.expanded .logo-initial,.logo-container:hover .logo-initial{transform:rotate(0)}.logo-container.expanded .logo-cursor,.logo-container:hover .logo-cursor{transform:translate(10ch)}.logo-container.expanded .logo-rest,.logo-container:hover .logo-rest{max-width:500px;opacity:1}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@media (max-width: 768px){.logo-container.expanded .logo-rest,.logo-container:hover .logo-rest{max-width:0!important;opacity:1!important;transition:none!important}.logo-container.expanded .logo-cursor,.logo-container:hover .logo-cursor{transform:none!important}}.nav-links{list-style:none;display:flex;gap:1.5rem;margin:0;padding:0}.nav-links a{text-decoration:none;color:#333;font-size:1.2rem;transition:color 0s ease}.nav-links a:hover,.nav-link.active{color:#d36d23}body{margin:0;text-decoration:none;font-family:Fira Code,monospace;background:#f0f0f0;color:#333}.main-link{color:inherit;text-decoration:none;transition:color 0s ease}.main-link:hover{color:#d36d23}.container{text-align:center;margin-top:100px}h1{color:#2c3e50}.widget-container{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-top:5rem;padding:1rem}.widget{flex:1 1 20%;background-color:#f7f7f7;border:1px solid #ddd;border-radius:12px;padding:1rem;box-shadow:0 4px 6px #0000000d;transition:transform .2s ease;display:flex;flex-direction:column;height:300px;min-width:250px}.widget:hover{transform:translateY(-10px)}.widget-content{flex-grow:1;margin-bottom:1rem;overflow-y:auto}.widget h3{margin-top:0;color:#333}.widget p{text-align:left;margin:.5rem 0 0;color:#555}.widget-header{display:flex;justify-content:space-between;align-items:baseline;gap:20px}.widget-header p{margin:0}.eq-bars{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:20px;margin-top:0}.eq-bars span{display:inline-block;width:3px;height:100%;background-color:#d36d23;animation:eqAnim 1s infinite ease-in-out}.eq-bars span:nth-child(1){animation-delay:0s}.eq-bars span:nth-child(2){animation-delay:.2s}.eq-bars span:nth-child(3){animation-delay:.4s}.eq-bars span:nth-child(4){animation-delay:.6s}.eq-bars span:nth-child(5){animation-delay:.8s}@keyframes eqAnim{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.current-song{font-weight:700;margin-bottom:30px}.suggestion-box{margin-top:0;display:flex;flex-direction:column;gap:.5rem}.suggestion-box input{padding:.5rem 1rem;border-radius:30px;border:1px solid #ccc;font-size:.9rem;width:100%;box-sizing:border-box}.suggestion-box p{text-align:center;padding:.5rem 1rem;border-radius:30px;border:1px solid #ccc;font-size:.9rem;width:100%;box-sizing:border-box;background-color:#aaa}.hourly-forecast{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid #ddd;font-size:.9rem}.forecast-hour{text-align:center;flex:1}.hour{font-weight:700;margin-bottom:.25rem}.icon{font-size:1.4rem;margin:.25rem 0}.temp{color:#555}.activity-chart{display:flex;align-items:flex-end;justify-content:space-between;height:120px;margin-top:3rem;padding:0 .5rem}.day{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;width:100%}.bar{width:20px;background-color:#d36d23;border-radius:3px 3px 0 0;transition:height .3s ease}.label{margin-top:.25rem;font-size:.8rem;color:#666}.page{padding:3rem 1rem 1rem;line-height:1.6;font-size:1.1rem}.page h1{max-width:600px;margin:0rem auto}
