/* Gallery - Renaissance Edition */ .skills-section { position: relative; padding: var(--spacing-xl) 0; overflow: hidden; background: var(--color-bg); } .skills-gallery { display: block; /* Override grid from previous version */ position: relative; } /* The horizontal track */ .gallery-track { display: flex; gap: var(--spacing-lg); overflow-x: auto; scroll-snap-type: x mandatory; padding: var(--spacing-md) var(--spacing-lg) var(--spacing-xl); -webkit-overflow-scrolling: touch; scrollbar-width: none; /* Firefox */ cursor: grab; } .gallery-track:active { cursor: grabbing; } .gallery-track::-webkit-scrollbar { display: none; /* Chrome */ } /* The Art Frame */ .gallery-frame { flex: 0 0 80vw; max-width: 1100px; scroll-snap-align: center; position: relative; background: var(--color-paper); border: 1px solid var(--color-mist); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 20px 50px -10px rgba(0, 0, 0, 0.1); border-radius: 2px; /* Sharp, like a frame */ overflow: hidden; opacity: 0.4; transform: scale(0.95); transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out), box-shadow 0.6s var(--ease-out); } /* Active State (Center) */ .gallery-frame.active { opacity: 1; transform: scale(1); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 40px 100px -20px rgba(0, 0, 0, 0.2); border-color: var(--color-charcoal); border-width: 1px; } /* Frame Content Layout */ .gallery-content { display: grid; grid-template-columns: 1.2fr 1fr; height: 600px; /* Fixed height for consistency */ } @media (max-width: 900px) { .gallery-frame { flex: 0 0 90vw; } .gallery-content { grid-template-columns: 1fr; height: auto; min-height: 600px; } } /* Visual Side (Demo) */ .gallery-visual { background: var(--color-cream); border-right: 1px solid var(--color-mist); position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; padding: var(--spacing-lg); } /* Info Side */ .gallery-info { padding: var(--spacing-xl); display: flex; flex-direction: column; overflow-y: auto; } .gallery-header { margin-bottom: var(--spacing-lg); } .gallery-title { font-family: var(--font-display); font-size: 2.5rem; font-style: italic; margin: 0 0 var(--spacing-xs); color: var(--color-ink); } .gallery-meta { font-family: var(--font-mono); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--color-ash); } .gallery-desc { font-size: 1.125rem; line-height: 1.6; color: var(--color-charcoal); margin-bottom: var(--spacing-xl); max-width: 45ch; } /* Tags within frame */ .gallery-tags { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); margin-top: auto; } .gallery-tag { padding: 6px 12px; border: 1px solid var(--color-mist); border-radius: 4px; font-size: 0.8125rem; color: var(--color-ash); } /* Map Navigation */ .gallery-map { display: flex; justify-content: center; gap: 8px; margin-top: var(--spacing-lg); } .gallery-dot { width: 40px; height: 2px; background: var(--color-mist); cursor: pointer; transition: all 0.3s ease; position: relative; border: none; padding: 0; font: inherit; } .gallery-dot::after { content: ''; position: absolute; top: -10px; bottom: -10px; left: 0; right: 0; } .gallery-dot:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; border-radius: 2px; } .gallery-dot.active { background: var(--color-accent); height: 4px; }