*{margin:0;padding:0;box-sizing:border-box}body{font-family:Orbitron,monospace;background:#eee;color:#222;overflow-x:hidden;min-height:100vh;font-weight:400}.gallery-grid{display:grid;gap:0;padding:0;width:100vw;transition:all .3s ease;align-content:start}.gallery-grid.size-normal{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.gallery-grid.size-large{grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.gallery-grid.layout-horizontal.size-normal{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.gallery-grid.layout-horizontal.size-large{grid-template-columns:repeat(auto-fit,minmax(500px,1fr))}.gallery-grid.layout-horizontal .card-item{aspect-ratio:3/2}.card-item{position:relative;aspect-ratio:2/3;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;background:#ffffff05;border:1px solid rgba(255,255,255,.05);box-shadow:0 0 #0000}.card-item:hover{border-color:#ffffff26;box-shadow:0 8px 24px #0006;z-index:10;border-radius:15px;.card-canvas{transform:scale(1.75)}}.gallery-hover-active .card-item{position:relative}.gallery-hover-active .card-item:before{content:"";position:absolute;inset:0;background:#000000e6;z-index:1;pointer-events:none;transition:background .3s ease}.gallery-hover-active .card-item:hover:before{background:#0000}.gallery-hover-active{background:#000;transition:background .3s ease}.card-canvas{width:100%;height:100%;display:block;object-fit:cover;transition:all .3s cubic-bezier(.4,0,.2,1)}.card-label{position:absolute;bottom:20px;left:20px;background:none;padding:0;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500;line-height:1.2;transition:all .3s ease;text-align:left;text-shadow:2px 2px 8px rgba(0,0,0,.9);color:#fff;letter-spacing:.5px}.labels-hidden .card-label{opacity:0}.fullscreen-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000f2;z-index:1000;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(20px)}.fullscreen-modal.hidden{display:none}.fullscreen-canvas{border-radius:8px;box-shadow:0 24px 80px #00000080}.fullscreen-controls{position:absolute;top:32px;right:32px;display:flex;gap:24px;z-index:1001}.control-btn{background:none;border:none;color:#ffffffb3;padding:0;cursor:pointer;font-size:24px;font-family:Orbitron,monospace;font-weight:600;transition:all .2s ease;text-transform:uppercase;letter-spacing:1px;position:relative}.control-btn:hover{color:#fff;transform:scale(1.1)}.control-btn.active{color:#0f8;text-shadow:0 0 10px rgba(0,255,136,.3)}.control-btn.close{font-size:32px;color:#fff9;font-weight:300}.control-btn.close:hover{color:#f44;transform:scale(1.2)}.nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;color:#fff9;font-size:48px;padding:0;cursor:pointer;transition:all .2s ease;font-family:Orbitron,monospace;font-weight:700;width:60px;height:60px;display:flex;align-items:center;justify-content:center}.nav-btn:hover{color:#fff;transform:translateY(-50%) scale(1.2);text-shadow:0 0 20px rgba(255,255,255,.3)}.nav-btn.prev{left:20px}.nav-btn.next{right:20px}.fullscreen-info{position:absolute;bottom:32px;left:32px;background:none;padding:0;font-size:14px;font-family:JetBrains Mono,monospace;font-weight:500;color:#fffc;text-shadow:2px 2px 8px rgba(0,0,0,.9);letter-spacing:.5px}.loading{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:18px;font-family:Orbitron,monospace;color:#fffc;text-align:center;font-weight:500;letter-spacing:1px}.shortcuts-hint{position:fixed;bottom:32px;right:32px;background:none;font-size:11px;font-family:JetBrains Mono,monospace;color:#ffffff80;opacity:.7;transition:all .3s ease;line-height:1.6;text-shadow:1px 1px 4px rgba(0,0,0,.8);letter-spacing:.3px;text-align:right;z-index:1002;background:#000a;padding:10px;border-radius:5px}@media (max-width: 768px){.shortcuts-hint{display:none}}.shortcuts-hint:hover{opacity:1;color:#fffc}.fullscreen-ui{transition:opacity .5s ease}.fullscreen-ui.hidden{opacity:0;pointer-events:none}.fullscreen-ui.visible{opacity:1;pointer-events:all}.gallery-controls{position:fixed;top:32px;right:32px;display:flex;gap:24px;z-index:1001}.gallery-control-btn{background:none;border:none;color:#ffffffb3;padding:0;cursor:pointer;font-size:24px;font-family:Orbitron,monospace;font-weight:600;transition:all .2s ease;text-transform:uppercase;letter-spacing:1px;position:relative}.gallery-control-btn:hover{color:#fff;transform:scale(1.1)}.gallery-control-btn.active{color:#0f8;text-shadow:0 0 10px rgba(0,255,136,.3)}.camera-btn{background:none;border:none;color:#ffffffb3;padding:0;cursor:pointer;font-size:24px;font-family:Orbitron,monospace;font-weight:600;transition:all .2s ease;text-transform:uppercase;letter-spacing:1px;position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px}.camera-btn:hover{color:#0f8;transform:scale(1.1)}.camera-btn:active{transform:scale(.95)}.camera-icon{position:relative;width:24px;height:16px;background:currentColor;margin-top:6px}.camera-icon:before{content:"";position:absolute;top:50%;left:50%;width:10px;height:10px;background:#111;border-radius:50%;transform:translate(-50%,-50%);border:1px solid rgba(0,0,0,.5)}.camera-icon:after{content:"";position:absolute;top:2px;right:3px;width:4px;height:4px;background:#111;border-radius:1px}.camera-body,.camera-lens,.camera-flash{display:none}.camera-btn:hover .camera-icon{animation:camera-shutter .3s ease}@keyframes camera-shutter{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}.flash-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#fff;opacity:0;pointer-events:none;z-index:2000;transition:opacity .3s ease-out}.flash-overlay.flash{opacity:.8;transition:opacity .1s ease-in}.download-feedback{position:fixed;top:50vh;left:50vw;transform:translate(-50%,-50%) scale(0);width:120px;height:120px;z-index:2001;pointer-events:none;opacity:0;transition:all .3s cubic-bezier(.18,.89,.32,1.28);background:url(../img/spark.svg) no-repeat center center;background-size:contain;filter:brightness(0) invert(1);mix-blend-mode:difference}.download-feedback.show{opacity:1;transform:translate(-50%,-50%) scale(10) rotate(-200deg)}.download-feedback.move-to-downloads{opacity:0;top:32px;left:calc(100vw - 64px);width:0px;height:0px;transform:translate(-50%,-50%) scale(0) rotate(360deg);transition:all 1s cubic-bezier(.68,-.1,.265,1.55)}
