.app-header[data-v-aa524637]{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--color-white);border-bottom:1px solid var(--color-border);z-index:100}.header-inner[data-v-aa524637]{max-width:1280px;margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 2rem}.logo[data-v-aa524637]{display:flex;align-items:center;gap:.5rem;color:var(--color-text);transition:opacity var(--transition-fast)}.logo[data-v-aa524637]:hover{opacity:.7}.logo-text[data-v-aa524637]{font-weight:600;font-size:1.1rem;letter-spacing:-.02em}.nav-links[data-v-aa524637]{display:flex;align-items:center;gap:2rem}.nav-link[data-v-aa524637]{font-size:.9rem;color:var(--color-text-secondary);transition:color var(--transition-fast);font-weight:500}.nav-link[data-v-aa524637]:hover,.nav-link.active[data-v-aa524637]{color:var(--color-text)}.header-actions[data-v-aa524637]{display:flex;align-items:center}.btn-ghost[data-v-aa524637]{display:flex;align-items:center;gap:.4rem;font-size:.875rem;color:var(--color-text-secondary);padding:.4rem .8rem;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.btn-ghost[data-v-aa524637]:hover{color:var(--color-text);background:var(--color-surface)}@media(max-width:640px){.header-inner[data-v-aa524637]{padding:0 1rem}.nav-links[data-v-aa524637]{gap:1rem}.nav-link[data-v-aa524637]{font-size:.85rem}}.login-backdrop[data-v-50f48498]{position:fixed;inset:0;background:var(--color-overlay);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn-50f48498 var(--transition-slow)}@keyframes fadeIn-50f48498{0%{opacity:0}to{opacity:1}}.login-card[data-v-50f48498]{background:var(--color-white);border-radius:12px;padding:2.5rem;width:100%;max-width:400px;position:relative;animation:slideUp-50f48498 var(--transition-normal)}@keyframes slideUp-50f48498{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.close-btn[data-v-50f48498]{position:absolute;top:1rem;right:1rem;color:var(--color-text-muted);padding:.25rem;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.close-btn[data-v-50f48498]:hover{color:var(--color-text);background:var(--color-surface)}.login-title[data-v-50f48498]{font-size:1.5rem;font-weight:600;margin-bottom:.25rem;letter-spacing:-.01em}.login-subtitle[data-v-50f48498]{font-size:.9rem;color:var(--color-text-secondary);margin-bottom:1.75rem}.login-form[data-v-50f48498]{display:flex;flex-direction:column;gap:1.25rem}.form-group[data-v-50f48498]{display:flex;flex-direction:column;gap:.4rem}.form-label[data-v-50f48498]{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text)}.form-input[data-v-50f48498]{padding:.65rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-cream);font-size:.9375rem;color:var(--color-text);transition:all var(--transition-fast);outline:none}.form-input[data-v-50f48498]:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2940561a;background:var(--color-white)}.form-input[data-v-50f48498]::placeholder{color:var(--color-text-muted)}.error-text[data-v-50f48498]{color:var(--color-error);font-size:.8125rem}.submit-btn[data-v-50f48498]{padding:.7rem 1.5rem;background:var(--color-accent);color:#fff;border-radius:var(--radius-sm);font-weight:500;font-size:.9375rem;transition:all var(--transition-fast);margin-top:.5rem}.submit-btn[data-v-50f48498]:hover:not(:disabled){filter:brightness(.9)}.submit-btn[data-v-50f48498]:disabled{opacity:.5;cursor:not-allowed}.default-layout[data-v-0a439d55]{min-height:100vh;display:flex;flex-direction:column}.main-content[data-v-0a439d55]{flex:1;padding-top:var(--header-height)}.gallery-item[data-v-ba902d8d]{break-inside:avoid;margin-bottom:1.25rem;border-radius:var(--radius-card);overflow:hidden;cursor:pointer}.image-wrapper[data-v-ba902d8d]{position:relative;overflow:hidden;border-radius:var(--radius-card)}.photo-thumb[data-v-ba902d8d]{width:100%;display:block;transition:transform var(--transition-normal)}.gallery-item:hover .photo-thumb[data-v-ba902d8d]{transform:scale(1.02)}.gallery-item[data-v-ba902d8d]:hover{box-shadow:0 8px 24px #0000000f;transform:translateY(-2px);transition:all var(--transition-normal)}.hover-overlay[data-v-ba902d8d]{position:absolute;bottom:0;left:0;right:0;padding:2.5rem 1rem 1rem;background:linear-gradient(transparent,#0006);opacity:0;transition:opacity var(--transition-normal)}.gallery-item:hover .hover-overlay[data-v-ba902d8d]{opacity:1}.photo-title[data-v-ba902d8d]{color:#fff;font-size:.9rem;font-weight:500;line-height:1.3}.grid-loading[data-v-3685d88e]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:4rem;color:var(--color-text-muted)}.loading-spinner[data-v-3685d88e]{width:32px;height:32px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin-3685d88e .8s linear infinite}@keyframes spin-3685d88e{to{transform:rotate(360deg)}}.grid-error[data-v-3685d88e]{padding:4rem;text-align:center;color:var(--color-error)}.grid-empty[data-v-3685d88e]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:6rem 2rem;color:var(--color-text-muted)}.grid-empty p[data-v-3685d88e]{font-size:1rem}.masonry-grid[data-v-3685d88e]{column-count:3;column-gap:1.25rem}@media(max-width:1024px){.masonry-grid[data-v-3685d88e]{column-count:2}}@media(max-width:640px){.masonry-grid[data-v-3685d88e]{column-count:1}}.tag-chip[data-v-4a556900]{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .8rem;background:var(--color-surface);border-radius:var(--radius-pill);font-size:.8125rem;color:var(--color-text-secondary);transition:all var(--transition-fast);white-space:nowrap}.tag-chip[data-v-4a556900]:hover{background:var(--color-border);color:var(--color-text)}.tag-chip.active[data-v-4a556900]{background:var(--color-accent);color:#fff}.tag-count[data-v-4a556900]{font-size:.7rem;opacity:.7}.tag-filter[data-v-0b40480f]{margin-bottom:2rem}.tag-filter-inner[data-v-0b40480f]{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.clear-btn[data-v-0b40480f]{font-size:.8125rem;color:var(--color-accent);font-weight:500;padding:.3rem .8rem;border-radius:var(--radius-pill);transition:background var(--transition-fast)}.clear-btn[data-v-0b40480f]:hover{background:var(--color-surface)}.lightbox-backdrop[data-v-b33434d6]{position:fixed;inset:0;background:var(--color-overlay);z-index:300;display:flex;align-items:center;justify-content:center;animation:fadeIn-b33434d6 .25s ease-out}@keyframes fadeIn-b33434d6{0%{opacity:0}to{opacity:1}}.lightbox-close[data-v-b33434d6]{position:absolute;top:1.25rem;right:1.25rem;color:#ffffff80;padding:.5rem;border-radius:var(--radius-sm);transition:all var(--transition-fast);z-index:10}.lightbox-close[data-v-b33434d6]:hover{color:#fff;background:#ffffff1a}.lightbox-nav[data-v-b33434d6]{position:absolute;top:50%;transform:translateY(-50%);color:#ffffff80;padding:.75rem;border-radius:var(--radius-sm);transition:all var(--transition-fast);z-index:10}.lightbox-nav[data-v-b33434d6]:hover{color:#fff;background:#ffffff1a}.lightbox-prev[data-v-b33434d6]{left:1.25rem}.lightbox-next[data-v-b33434d6]{right:1.25rem}.lightbox-content[data-v-b33434d6]{display:flex;align-items:center;justify-content:center;max-width:90vw;max-height:85vh}.lightbox-image[data-v-b33434d6]{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:4px;opacity:0;transform:scale(.95);transition:opacity .3s ease-out,transform .3s ease-out}.lightbox-image.loaded[data-v-b33434d6]{opacity:1;transform:scale(1)}.lightbox-meta[data-v-b33434d6]{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);text-align:center;max-width:600px;width:90%}.lightbox-title[data-v-b33434d6]{color:#fff;font-size:1.25rem;font-weight:600;margin-bottom:.25rem;letter-spacing:-.01em}.lightbox-description[data-v-b33434d6]{color:#fff9;font-size:.9rem;margin-bottom:.75rem;line-height:1.5}.lightbox-tags[data-v-b33434d6]{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}.lightbox-tags[data-v-b33434d6] .tag-chip{background:#ffffff1a;color:#fffc}.lightbox-tags[data-v-b33434d6] .tag-chip:hover{background:#fff3}.lightbox-counter[data-v-b33434d6]{position:absolute;bottom:1rem;right:1.5rem;color:#ffffff4d;font-size:.8125rem}.meta-fade-enter-active[data-v-b33434d6]{transition:opacity .2s ease-out .1s}.meta-fade-leave-active[data-v-b33434d6]{transition:opacity .1s ease-in}.meta-fade-enter-from[data-v-b33434d6],.meta-fade-leave-to[data-v-b33434d6]{opacity:0}@media(max-width:640px){.lightbox-nav[data-v-b33434d6]{padding:.5rem}.lightbox-prev[data-v-b33434d6]{left:.5rem}.lightbox-next[data-v-b33434d6]{right:.5rem}.lightbox-meta[data-v-b33434d6]{bottom:1.5rem}.lightbox-title[data-v-b33434d6]{font-size:1rem}}.gallery-view[data-v-48faabb1]{min-height:calc(100vh - var(--header-height));padding:3rem 2rem 4rem}.gallery-container[data-v-48faabb1]{max-width:1280px;margin:0 auto}.gallery-header[data-v-48faabb1]{margin-bottom:2rem}.gallery-title[data-v-48faabb1]{font-size:2.25rem;font-weight:600;letter-spacing:-.02em;line-height:1.2}.gallery-subtitle[data-v-48faabb1]{color:var(--color-text-secondary);margin-top:.25rem}@media(max-width:640px){.gallery-view[data-v-48faabb1]{padding:2rem 1rem 3rem}.gallery-title[data-v-48faabb1]{font-size:1.75rem}}.upload-view[data-v-eedf01b5]{min-height:calc(100vh - var(--header-height));padding:3rem 2rem 4rem}.upload-container[data-v-eedf01b5]{max-width:640px;margin:0 auto}.upload-header[data-v-eedf01b5]{margin-bottom:2rem}.upload-title[data-v-eedf01b5]{font-size:2.25rem;font-weight:600;letter-spacing:-.02em}.upload-subtitle[data-v-eedf01b5]{color:var(--color-text-secondary);margin-top:.25rem}.upload-form[data-v-eedf01b5]{display:flex;flex-direction:column;gap:1.5rem}.drop-zone[data-v-eedf01b5]{border:2px dashed var(--color-border);border-radius:var(--radius-card);padding:3rem 2rem;text-align:center;cursor:pointer;transition:all var(--transition-fast);color:var(--color-text-muted);background:var(--color-cream)}.drop-zone[data-v-eedf01b5]:hover{border-color:var(--color-accent);color:var(--color-text-secondary);background:var(--color-surface)}.drop-text[data-v-eedf01b5]{margin-top:1rem;font-size:.9375rem;color:var(--color-text-secondary)}.drop-hint[data-v-eedf01b5]{margin-top:.25rem;font-size:.8125rem;color:var(--color-text-muted)}.preview-zone[data-v-eedf01b5]{position:relative;border-radius:var(--radius-card);overflow:hidden}.preview-image[data-v-eedf01b5]{width:100%;max-height:300px;object-fit:contain;background:var(--color-surface);border-radius:var(--radius-card)}.remove-btn[data-v-eedf01b5]{position:absolute;top:.75rem;right:.75rem;background:#0009;color:#fff;padding:.35rem .75rem;border-radius:var(--radius-sm);font-size:.8125rem;transition:background var(--transition-fast)}.remove-btn[data-v-eedf01b5]:hover{background:#000c}.form-group[data-v-eedf01b5]{display:flex;flex-direction:column;gap:.4rem}.form-label[data-v-eedf01b5]{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text)}.form-input[data-v-eedf01b5]{padding:.65rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-cream);font-size:.9375rem;color:var(--color-text);transition:all var(--transition-fast);outline:none}.form-input[data-v-eedf01b5]:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2940561a;background:var(--color-white)}.form-input[data-v-eedf01b5]::placeholder{color:var(--color-text-muted)}.form-textarea[data-v-eedf01b5]{resize:vertical;min-height:80px}.form-hint[data-v-eedf01b5]{font-size:.75rem;color:var(--color-text-muted)}.error-text[data-v-eedf01b5]{color:var(--color-error);font-size:.875rem}.success-text[data-v-eedf01b5]{color:var(--color-success);font-size:.9rem;font-weight:500;padding:.75rem;background:#10b98114;border-radius:var(--radius-sm)}.submit-btn[data-v-eedf01b5]{padding:.7rem 1.5rem;background:var(--color-accent);color:#fff;border-radius:var(--radius-sm);font-weight:500;font-size:.9375rem;transition:all var(--transition-fast);margin-top:.5rem}.submit-btn[data-v-eedf01b5]:hover:not(:disabled){filter:brightness(.9)}.submit-btn[data-v-eedf01b5]:disabled{opacity:.5;cursor:not-allowed}.detail-view[data-v-a863687e]{min-height:calc(100vh - var(--header-height));padding:3rem 2rem 4rem}.detail-loading[data-v-a863687e]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:4rem;color:var(--color-text-muted)}.loading-spinner[data-v-a863687e]{width:32px;height:32px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin-a863687e .8s linear infinite}@keyframes spin-a863687e{to{transform:rotate(360deg)}}.detail-empty[data-v-a863687e]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:6rem 2rem;color:var(--color-text-muted);text-align:center}.detail-empty h2[data-v-a863687e]{font-size:1.25rem;color:var(--color-text)}.back-btn[data-v-a863687e]{padding:.5rem 1.25rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.875rem;color:var(--color-text-secondary);transition:all var(--transition-fast)}.back-btn[data-v-a863687e]:hover{border-color:var(--color-accent);color:var(--color-accent)}.detail-container[data-v-a863687e]{max-width:960px;margin:0 auto}.detail-image-wrapper[data-v-a863687e]{border-radius:var(--radius-card);overflow:hidden;background:var(--color-surface)}.detail-image[data-v-a863687e]{width:100%;max-height:70vh;object-fit:contain;margin:0 auto}.detail-meta[data-v-a863687e]{margin-top:2rem;max-width:640px}.back-link[data-v-a863687e]{font-size:.875rem;color:var(--color-text-muted);margin-bottom:1.25rem;transition:color var(--transition-fast)}.back-link[data-v-a863687e]:hover{color:var(--color-accent)}.detail-title[data-v-a863687e]{font-size:2rem;font-weight:600;letter-spacing:-.02em;line-height:1.2;margin-bottom:.75rem}.detail-description[data-v-a863687e]{color:var(--color-text-secondary);font-size:1rem;line-height:1.65;margin-bottom:1.5rem;white-space:pre-line}.detail-tags[data-v-a863687e]{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.detail-date[data-v-a863687e]{font-size:.8125rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}@media(max-width:640px){.detail-view[data-v-a863687e]{padding:2rem 1rem 3rem}.detail-title[data-v-a863687e]{font-size:1.5rem}}.tags-view[data-v-faa1d5d9]{min-height:calc(100vh - var(--header-height));padding:3rem 2rem 4rem}.tags-container[data-v-faa1d5d9]{max-width:800px;margin:0 auto}.tags-header[data-v-faa1d5d9]{margin-bottom:2.5rem}.tags-title[data-v-faa1d5d9]{font-size:2.25rem;font-weight:600;letter-spacing:-.02em}.tags-subtitle[data-v-faa1d5d9]{color:var(--color-text-secondary);margin-top:.25rem}.tags-loading[data-v-faa1d5d9]{display:flex;justify-content:center;padding:4rem}.loading-spinner[data-v-faa1d5d9]{width:32px;height:32px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin-faa1d5d9 .8s linear infinite}@keyframes spin-faa1d5d9{to{transform:rotate(360deg)}}.tags-empty[data-v-faa1d5d9]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:6rem 2rem;color:var(--color-text-muted);text-align:center}.tags-grid[data-v-faa1d5d9]{display:flex;flex-wrap:wrap;gap:.625rem}@media(max-width:640px){.tags-view[data-v-faa1d5d9]{padding:2rem 1rem 3rem}.tags-title[data-v-faa1d5d9]{font-size:1.75rem}}:root{--color-cream: #fcfafa;--color-surface: #f5f5f5;--color-white: #ffffff;--color-text: #2c2c2c;--color-text-secondary: #6b6b6b;--color-text-muted: #999999;--color-border: #e8e8e8;--color-accent: #294056;--color-success: #10b981;--color-error: #ef4444;--color-overlay: rgba(15, 15, 15, .92);--font-sans: "Inter", system-ui, -apple-system, sans-serif;--header-height: 3.5rem;--transition-fast: .2s ease-out;--transition-normal: .25s ease-out;--transition-slow: .3s ease-out;--radius-sm: 8px;--radius-card: 8px;--radius-pill: 9999px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-weight:400;line-height:1.65;color:var(--color-text);background-color:var(--color-cream);min-height:100vh}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:none;background:none}input,textarea{font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}