*{margin:0;padding:0;box-sizing:border-box}:root,[data-theme=light]{color-scheme:light;--bg:#f5f5f5;--bg-elevated:#ffffff;--fg:#333333;--fg-muted:#666666;--fg-subtle:#999999;--border:#e0e0e0;--border-strong:#cccccc;--shadow:0 2px 4px rgba(0,0,0,0.1);--shadow-strong:0 2px 8px rgba(0,0,0,0.08);--primary:#007bff;--primary-hover:#0069d9;--secondary:#6c757d;--danger:#dc3545;--success-bg:#d4edda;--success-fg:#155724;--success-border:#c3e6cb;--error-bg:#f8d7da;--error-fg:#721c24;--error-border:#f5c6cb;--input-bg:#ffffff;--input-border:#cccccc;--chip-bg:#e8f1ff;--chip-fg:#1d4ed8;--toggle-off:#cccccc;--toggle-on:#28a745;--watermark:rgba(0,0,0,0.28);--overlay-scrim:rgba(0,0,0,0.88);--tile-gap-bg:#d1d5db;--btn-fg:#ffffff;--shimmer-base:#e8e8e8;--shimmer-mid:#f3f3f3;--primary-ring:rgba(0,123,255,0.35);--primary-soft:rgba(0,123,255,0.08);--like:#e74c3c;--select-bg:rgba(255,255,255,0.9);--sheet-handle:#cbd5e1;--sheet-elevated:rgba(255,255,255,0.97);--toggle-thumb:#ffffff;--spinner-core:#ffffff;--spinner-halo:rgba(255,255,255,0.55);--spinner-halo-strong:rgba(255,255,255,0.72);--spinner-glow:rgba(0,123,255,0.28);--spinner-glow-strong:rgba(0,123,255,0.42)}[data-theme=dark]{color-scheme:dark;--bg:#1c1f26;--bg-elevated:#272b33;--fg:#eef0f3;--fg-muted:#b0b6c0;--fg-subtle:#8a91a0;--border:#3a414c;--border-strong:#4a5260;--shadow:0 2px 8px rgba(0,0,0,0.35);--shadow-strong:0 4px 16px rgba(0,0,0,0.4);--primary:#4a95ff;--primary-hover:#6aa8ff;--secondary:#6a7280;--danger:#e76d79;--success-bg:#1c3f26;--success-fg:#a8dbb2;--success-border:#2d5a3a;--error-bg:#462428;--error-fg:#f3c0c6;--error-border:#6a353c;--input-bg:#22262e;--input-border:#4a5260;--chip-bg:#243652;--chip-fg:#9cc8ff;--toggle-off:#4a5260;--toggle-on:#35a866;--watermark:rgba(255,255,255,0.32);--overlay-scrim:rgba(0,0,0,0.88);--tile-gap-bg:#3a414c;--btn-fg:#ffffff;--shimmer-base:#3a414c;--shimmer-mid:#4a5260;--primary-ring:rgba(74,149,255,0.4);--primary-soft:rgba(74,149,255,0.16);--like:#ff7a88;--select-bg:rgba(39,43,51,0.92);--sheet-handle:#4a5260;--sheet-elevated:rgba(39,43,51,0.97);--toggle-thumb:#ffffff;--spinner-core:#2a303a;--spinner-halo:rgba(154,176,210,0.18);--spinner-halo-strong:rgba(154,176,210,0.28);--spinner-glow:rgba(74,149,255,0.35);--spinner-glow-strong:rgba(74,149,255,0.55)}body{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;background:var(--bg);color:var(--fg);transition:background-color .2s ease,color .2s ease}.app-version-watermark{position:fixed;bottom:.75rem;right:.75rem;z-index:50;font-size:.7rem;letter-spacing:.06em;color:var(--watermark);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.container{max-width:1200px;margin:0 auto;padding:2rem}.header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.header h1{font-size:1.5rem;font-weight:600;letter-spacing:-.02em;line-height:1.25}.header-actions{display:flex;align-items:center;gap:.15rem;flex-wrap:wrap;min-width:0}.header-actions-mobile{display:none;align-items:center;gap:.15rem;flex-shrink:0}.header-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;border:none;border-radius:6px;background:transparent;color:var(--fg-muted);cursor:pointer;line-height:0;transition:color .15s ease,background-color .15s ease}.header-menu-btn:hover{color:var(--fg);background:var(--primary-soft)}.header-menu-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.header-nav-primary,.header-nav-utils{display:flex;align-items:center;gap:.15rem;min-width:0}.header-actions-sep{width:1px;height:1.15rem;margin:0 .4rem;background:var(--border-strong);flex-shrink:0}.nav-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--fg-muted);font:inherit;font-size:.9rem;font-weight:500;padding:.4rem .7rem;text-decoration:none;border-radius:6px;cursor:pointer;transition:color .15s ease,background-color .15s ease;white-space:nowrap}.nav-link:hover{color:var(--fg);background:var(--primary-soft)}.nav-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;min-width:2.25rem;padding:0;flex:0 0 2.25rem;line-height:0;border:none;border-radius:6px;background:transparent;color:var(--fg-muted);cursor:pointer;transition:color .15s ease,background-color .15s ease}.theme-toggle:hover{color:var(--fg);background:var(--primary-soft);opacity:1}.theme-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.theme-toggle svg{width:1.2rem;height:1.2rem;display:block;flex-shrink:0}.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:opacity .2s,background-color .15s ease}.btn:hover{opacity:.8}.btn-primary{background:var(--primary);color:var(--btn-fg)}.btn-secondary{background:var(--secondary);color:var(--btn-fg)}.btn-danger{background:var(--danger);color:var(--btn-fg)}.confirm-dialog-backdrop{position:fixed;inset:0;z-index:10000;background:var(--overlay-scrim);display:flex;align-items:center;justify-content:center;padding:1rem}.confirm-dialog{width:min(420px,100%);margin:0;box-shadow:var(--shadow)}.confirm-dialog-title{margin:0 0 .75rem;font-size:1.15rem}.confirm-dialog-body{margin:0 0 1.25rem;color:var(--fg);line-height:1.45}.confirm-dialog-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.25rem;font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.5rem;border:1px solid var(--input-border);border-radius:4px;font-size:1rem;background:var(--input-bg);color:var(--fg)}.card{background:var(--bg-elevated);border-radius:8px;padding:1.5rem;box-shadow:var(--shadow);margin-bottom:1rem;border:1px solid var(--border)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:1rem;gap:1rem}.image-card{background:var(--bg-elevated);border-radius:8px;overflow:hidden;box-shadow:var(--shadow);position:relative;border:1px solid var(--border)}.image-card img{width:100%;height:250px;object-fit:cover}.image-thumb{display:block;width:100%;padding:0;border:none;background:none;cursor:zoom-in;line-height:0}.lazy-image{position:relative;width:100%;height:250px;background:var(--shimmer-base);overflow:hidden}.lazy-image>img{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .25s ease}.lazy-image.is-loaded>img{opacity:1}.lazy-image-placeholder{display:block;width:100%;height:100%;background:linear-gradient(110deg,var(--shimmer-base) 30%,var(--shimmer-mid) 50%,var(--shimmer-base) 70%);background-size:200% 100%;animation:lazy-shimmer 1.4s ease-in-out infinite}@keyframes lazy-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (max-width:768px){.lazy-image{height:160px}}.image-thumb:hover .lazy-image.is-loaded>img{opacity:.92}.lightbox{position:fixed;inset:0;z-index:10000;background:var(--overlay-scrim);display:flex;align-items:center;justify-content:center;padding:1rem;touch-action:pan-y;-moz-user-select:none;user-select:none;-webkit-user-select:none}.lightbox-zoom-fallback{animation:lightbox-backdrop-in .35s ease}.lightbox-content{max-width:min(1100px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);display:flex;align-items:center;justify-content:center;touch-action:none;overflow:visible}.lightbox-content.lightbox-content-scroll{overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}.lightbox-stage{display:inline-block;line-height:0;overflow:hidden;border-radius:4px}.lightbox-frame,.lightbox-stage{position:relative;max-width:100%;max-height:calc(100vh - 2rem)}.lightbox-frame{display:inline-grid;justify-items:stretch;align-items:stretch}.lightbox-frame>.feedback-sheet,.lightbox-frame>.lightbox-chrome,.lightbox-frame>.lightbox-stage{grid-area:1/1}.lightbox-frame>.lightbox-stage{position:relative}.lightbox-frame>.feedback-sheet{z-index:2;align-self:end}.lightbox-image{display:block;max-width:100%;max-height:calc(100vh - 2rem);width:auto;height:auto;object-fit:contain;border-radius:4px;pointer-events:none;opacity:1;will-change:transform,opacity;view-transition-name:lightbox-photo}.lightbox-image-enter-next{animation:lightbox-enter-next .38s cubic-bezier(.22,1,.36,1)}.lightbox-image-enter-prev{animation:lightbox-enter-prev .38s cubic-bezier(.22,1,.36,1)}@keyframes lightbox-enter-next{0%{opacity:0;transform:translateX(42px) scale(.97);filter:blur(4px)}to{opacity:1;transform:translateX(0) scale(1);filter:blur(0)}}@keyframes lightbox-enter-prev{0%{opacity:0;transform:translateX(-42px) scale(.97);filter:blur(4px)}to{opacity:1;transform:translateX(0) scale(1);filter:blur(0)}}@keyframes lightbox-backdrop-in{0%{background:rgba(0,0,0,0)}to{background:rgba(0,0,0,.88)}}.lightbox-image-zoom-in{animation:lightbox-zoom-in .4s cubic-bezier(.22,1,.36,1)}@keyframes lightbox-zoom-in{0%{opacity:.75;transform:scale(.72)}to{opacity:1;transform:scale(1)}}::view-transition-new(root),::view-transition-old(root){animation-duration:.35s;animation-timing-function:ease}::view-transition-group(lightbox-photo){animation-duration:.42s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-new(lightbox-photo),::view-transition-old(lightbox-photo){height:100%;object-fit:contain;animation-duration:.42s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-group(lightbox-chrome){animation:none}::view-transition-old(lightbox-chrome){display:none}::view-transition-new(lightbox-chrome){animation:none}.lightbox-chrome{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:2.75rem .9rem .7rem;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.22) 55%,transparent);border-radius:0 0 4px 4px;pointer-events:none;line-height:normal;align-self:end;view-transition-name:lightbox-chrome}.lightbox-chrome>*{pointer-events:auto}.lightbox-footer{display:flex;align-items:center;gap:.65rem;color:#fff;flex-wrap:nowrap}.lightbox-meta{font-size:.88rem;color:rgba(255,255,255,.9);text-shadow:0 1px 3px rgba(0,0,0,.55);white-space:nowrap}.lightbox-meta-count{margin-left:auto}.lightbox-meta-message{white-space:normal;max-width:min(36rem,70vw)}.lightbox-hint{display:none}.lightbox-stage .like-btn{color:#fff;font-size:1.35rem;filter:drop-shadow(0 1px 3px rgba(0,0,0,.55));padding:.15rem}.lightbox-stage .like-btn.liked{color:#ff6b7a}.feedback-icon-btn{background:none;border:none;cursor:pointer;color:#fff;font-size:1.35rem;display:inline-flex;align-items:center;justify-content:center;padding:.15rem;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.55))}.feedback-icon-btn:hover{opacity:.85}.feedback-icon-btn.active{color:#7dd3fc}.feedback-sheet{position:absolute;left:0;right:0;bottom:0;z-index:2;background:var(--bg-elevated);border-radius:16px 16px 0 0;padding:.5rem 1rem 1.25rem;color:var(--fg);box-shadow:0 -8px 32px rgba(0,0,0,.35);max-height:min(70vh,420px);overflow:auto;touch-action:manipulation;-moz-user-select:none;user-select:none;-webkit-user-select:none;transform:translateY(0);opacity:1;line-height:normal}.feedback-sheet-enter{animation:feedback-sheet-in .28s ease-out}.feedback-sheet-shown{transform:translateY(0);opacity:1}.feedback-sheet-leave{animation:feedback-sheet-out .28s ease-in forwards;pointer-events:none}.feedback-sheet-handle{width:2.5rem;height:.3rem;border-radius:999px;background:var(--sheet-handle);margin:.35rem auto .75rem}.feedback-sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;gap:.75rem}.feedback-sheet-actions{display:flex;align-items:center;gap:.5rem}.feedback-sheet-header h3{margin:0;font-size:1.1rem}.feedback-sheet-close{background:none;border:none;font-size:1.6rem;line-height:1;color:var(--fg-muted);cursor:pointer;padding:.15rem .4rem}.feedback-sheet-form{display:flex;flex-direction:column;gap:.6rem}.feedback-sheet-label{font-size:.85rem;font-weight:600;color:var(--fg-muted);margin:0}.feedback-tags{display:flex;flex-wrap:wrap;gap:.5rem}.feedback-tag{border:1px solid var(--border-strong);background:var(--input-bg);color:var(--fg);border-radius:999px;padding:.45rem .85rem;font-size:.9rem;cursor:pointer}.feedback-tag.selected{background:var(--primary);border-color:var(--primary);color:var(--btn-fg)}.feedback-textarea{width:100%;resize:vertical;min-height:4.5rem;padding:.65rem .75rem;border:1px solid var(--input-border);border-radius:8px;font:inherit;font-size:1rem;background:var(--input-bg);color:var(--fg);-moz-user-select:text;user-select:text;-webkit-user-select:text}.feedback-textarea:focus{outline:2px solid var(--primary-ring);border-color:var(--primary)}.feedback-submit{margin-top:.35rem;width:100%;padding:.85rem 1rem;font-size:1.05rem;font-weight:600}.feedback-sheet-success{text-align:center;padding:1.5rem .5rem;color:var(--success-fg);font-weight:500}.feedback-sheet-inline{position:absolute;left:.65rem;right:.65rem;bottom:.65rem;z-index:2;width:auto;margin-top:0;border-radius:10px;box-shadow:var(--shadow-strong);background:var(--sheet-elevated);max-height:none;overflow:visible;padding:.85rem 1rem 1rem;flex-shrink:0;line-height:normal}.feedback-sheet-inline.feedback-sheet-enter{animation:feedback-inline-in .22s ease-out}.feedback-sheet-inline.feedback-sheet-leave{animation:feedback-inline-out .22s ease-in forwards}.feedback-sheet-inline .feedback-sheet-header{margin-bottom:.5rem;gap:.75rem}.feedback-sheet-inline .feedback-textarea{min-height:3.25rem}.lightbox-feedback-desktop,.lightbox-feedback-mobile{display:none}@keyframes feedback-sheet-in{0%{transform:translateY(100%);opacity:.6}to{transform:translateY(0);opacity:1}}@keyframes feedback-sheet-out{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:.6}}@keyframes feedback-inline-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes feedback-inline-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.lightbox-close{position:absolute;top:.75rem;right:1rem;background:none;border:none;color:white;font-size:2.5rem;line-height:1;cursor:pointer;padding:.25rem .5rem;opacity:.85;z-index:2;min-width:44px;min-height:44px}.lightbox-close:hover{opacity:1}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);border:none;color:white;font-size:2.5rem;line-height:1;width:3rem;height:3rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0 0 .2rem;z-index:2}.lightbox-nav:hover{background:rgba(255,255,255,.22)}.lightbox-prev{left:.75rem}.lightbox-next{right:.75rem}.admin-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem}.admin-hub-intro{margin:0 0 1.25rem;color:var(--fg-muted)}.admin-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));grid-gap:1rem;gap:1rem}.admin-hub-tile{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:1.25rem 1.35rem;border:1px solid var(--border);border-radius:.75rem;background:var(--bg-elevated);color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.admin-hub-tile:focus-visible,.admin-hub-tile:hover{border-color:var(--primary);outline:none}.admin-hub-tile h2{margin:0;font-size:1.25rem}.admin-hub-tile p{margin:0;color:var(--fg-muted);font-size:.95rem;line-height:1.4}.admin-hub-count{margin-top:.35rem;font-size:.85rem;color:var(--fg-subtle)}.maintenance-warning{margin:0 0 1.25rem;padding:.85rem 1rem;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:.5rem;background:var(--bg-elevated);color:var(--fg);line-height:1.45}.maintenance-lead code,.maintenance-warning code{font-size:.9em}.maintenance-card h2{margin:0 0 .5rem}.maintenance-lead{margin:0 0 1rem;color:var(--fg-muted);line-height:1.45}.maintenance-missing{margin:0 0 1rem;font-size:1.05rem}.maintenance-scope{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));grid-gap:0 1rem;gap:0 1rem}.maintenance-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.maintenance-results{margin-top:.5rem;padding-top:1rem;border-top:1px solid var(--border)}.maintenance-results h3{margin:0 0 .5rem;font-size:1.05rem}.maintenance-results ul{margin:0;padding-left:1.25rem;line-height:1.5}.maintenance-failures{margin-top:.75rem}.maintenance-failures ul{margin-top:.5rem}@media (max-width:768px){.container{padding:1rem}.header{flex-direction:row;align-items:center;gap:.75rem}.header h1{font-size:1.2rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions-desktop{display:none}.header-actions-mobile{display:flex}.theme-toggle{width:2.5rem;height:2.5rem;min-width:2.5rem;flex-basis:2.5rem}.admin-grid{grid-template-columns:1fr;gap:1rem}.gallery{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}.image-card img,.image-thumb img{height:160px}.group-card{flex-wrap:wrap;align-items:flex-start}.group-card>div:last-child{width:100%;justify-content:flex-end;flex-wrap:wrap}.lightbox{padding:3rem .5rem .5rem}.lightbox-image,.lightbox-stage{max-height:calc(100vh - 3.5rem)}.lightbox-nav{display:none}.lightbox-chrome{padding:2.25rem .75rem .6rem}.lightbox-close{top:.35rem;right:.35rem}.login-card{margin:1rem;padding:1.5rem}}@media (max-width:640px){.lightbox-prev{left:.35rem}.lightbox-next{right:.35rem}}.image-card-selectable{cursor:pointer;outline:2px solid transparent;transition:outline-color .15s,box-shadow .15s}.image-card-selectable.selected{outline-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.image-select{position:absolute;top:.5rem;left:.5rem;z-index:1;background:var(--select-bg);border-radius:4px;padding:.25rem;line-height:0}.image-select input{width:1.1rem;height:1.1rem;cursor:pointer}@media (max-width:768px){.image-select{top:.4rem;left:.4rem;padding:.45rem;border-radius:8px}.image-select input{width:1.35rem;height:1.35rem}.image-card-selectable.selection-active .image-thumb{cursor:pointer}}.image-actions{padding:.55rem .75rem;display:flex;align-items:center;gap:.5rem;min-height:2.75rem}.image-variant-label{font-size:.8rem;line-height:1;color:var(--fg-muted);display:inline-flex;align-items:center}.image-meta{font-size:.8rem;line-height:1;color:var(--fg-subtle);flex:1 1}.image-card-delete{padding:.35rem .75rem;font-size:.85rem}.like-btn{background:none;border:none;cursor:pointer;font-size:1.5rem;gap:.3rem;padding:0;color:inherit}.like-btn,.like-btn>span:not(.like-heart){line-height:1;display:inline-flex;align-items:center}.like-btn>span:not(.like-heart){font-size:1rem}.like-btn:hover .like-heart{transform:scale(1.1)}.like-btn:disabled{opacity:.6;cursor:wait}.like-btn:disabled .like-heart{transform:none}.like-btn.liked{color:var(--like)}.like-heart{display:inline-flex;align-items:center;justify-content:center;line-height:1;height:1em;transform-origin:center center;transition:transform .15s ease}.like-heart-jump{animation:like-jump .45s cubic-bezier(.34,1.56,.64,1)}@keyframes like-jump{0%{transform:scale(1) translateY(0)}30%{transform:scale(1.4) translateY(-10px)}55%{transform:scale(.92) translateY(0)}75%{transform:scale(1.12) translateY(-4px)}to{transform:scale(1) translateY(0)}}.group-list{display:grid;grid-gap:1rem;gap:1rem}.admin-feedback-list{display:flex;flex-direction:column;gap:.85rem}.admin-feedback-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.admin-feedback-header h2{margin:0}.admin-feedback-toolbar{display:flex;gap:.5rem;flex-wrap:wrap}.admin-feedback-item{display:flex;gap:.85rem;align-items:flex-start;padding:.75rem 0;border-bottom:1px solid var(--border)}.admin-feedback-item.selected{background:var(--primary-soft);margin:0 -.5rem;padding-left:.5rem;padding-right:.5rem;border-radius:6px}.admin-feedback-item:last-child{border-bottom:none;padding-bottom:0}.admin-feedback-check{flex-shrink:0;display:flex;align-items:center;padding-top:1.5rem;cursor:pointer}.admin-feedback-check input{width:1.1rem;height:1.1rem;cursor:pointer}.admin-feedback-thumb{flex-shrink:0;width:4.5rem;height:4.5rem;padding:0;border:none;border-radius:6px;overflow:hidden;background:var(--shimmer-base);cursor:pointer}.admin-feedback-thumb img{width:100%;height:100%;object-fit:cover;display:block}.admin-feedback-thumb-fallback{display:flex;width:100%;height:100%;align-items:center;justify-content:center;color:var(--fg-subtle);font-size:1.25rem}.admin-feedback-body{flex:1 1;min-width:0}.admin-feedback-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.9rem;color:var(--fg-muted);margin-bottom:.35rem}.admin-user-google-hint{display:inline-flex;align-items:center;gap:.2rem}.admin-user-google-email-info{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;padding:0;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--fg-muted);font:inherit;font-size:.7rem;font-weight:600;line-height:1;cursor:help}.admin-user-google-email-info:focus-visible,.admin-user-google-email-info:hover{color:var(--fg);border-color:var(--fg-muted);outline:none}.admin-feedback-album-link{background:none;border:none;padding:0;color:var(--primary);cursor:pointer;font:inherit;text-decoration:underline;text-underline-offset:2px}.admin-feedback-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.35rem}.admin-feedback-tag{display:inline-block;padding:.15rem .55rem;border-radius:999px;background:var(--chip-bg);color:var(--chip-fg);font-size:.8rem}.admin-feedback-message{margin:0;color:var(--fg);white-space:pre-wrap;word-break:break-word}.admin-feedback-delete-one{flex-shrink:0;padding:.4rem .75rem;font-size:.85rem;align-self:center}@media (max-width:640px){.admin-feedback-item{flex-wrap:wrap}.admin-feedback-delete-one{margin-left:auto}}.admin-likes-summary{margin:0 0 1.25rem;color:var(--fg-muted)}.admin-likes-users{display:flex;flex-direction:column;gap:1.25rem}.admin-likes-user{margin:0}.admin-likes-user-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.admin-likes-user-header h2{margin:0}.admin-likes-count{color:var(--fg-muted);font-size:.95rem;white-space:nowrap}.admin-likes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));grid-gap:.85rem;gap:.85rem}.admin-likes-item{display:flex;flex-direction:column;gap:.45rem;padding:0;border:none;background:none;text-align:left;cursor:zoom-in;color:inherit;font:inherit}.admin-likes-item:focus-visible .admin-likes-thumb,.admin-likes-item:hover .admin-likes-thumb{outline:2px solid var(--primary);outline-offset:2px}.admin-likes-thumb{width:100%;aspect-ratio:1;border-radius:.5rem;overflow:hidden;background:var(--bg-elevated,var(--bg))}.admin-likes-thumb img{width:100%;height:100%;object-fit:cover;display:block}.admin-likes-thumb-fallback{display:flex;width:100%;height:100%;align-items:center;justify-content:center;color:var(--fg-subtle);font-size:1.25rem}.admin-likes-item-meta{display:flex;flex-direction:column;gap:.15rem;min-width:0}.admin-likes-album{font-weight:600;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-likes-date,.admin-likes-variant{font-size:.8rem;color:var(--fg-muted)}.group-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:1.25rem;gap:1.25rem}.group-tile{display:block;width:100%;padding:0;border:1px solid var(--border);background:var(--bg-elevated);border-radius:10px;overflow:hidden;cursor:pointer;text-align:left;text-decoration:none;color:inherit;font:inherit;transition:transform .2s,box-shadow .2s}.group-tile,.group-tile:hover{box-shadow:var(--shadow-strong)}.group-tile:hover{transform:translateY(-3px)}.group-tile-preview{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;aspect-ratio:1;grid-gap:2px;gap:2px;background:var(--tile-gap-bg)}.group-tile-preview img,.group-tile-preview-empty{width:100%;height:100%;object-fit:cover;display:block;background:var(--border)}.group-tile-info{padding:.85rem 1rem 1rem}.group-tile-info h3{font-size:1.05rem;font-weight:600;margin:0 0 .2rem;color:var(--fg)}.group-tile-info p{margin:0;font-size:.875rem;color:var(--fg-muted)}.group-card{background:var(--bg-elevated);border-radius:8px;padding:1rem;box-shadow:var(--shadow);border:1px solid var(--border);transition:transform .2s;display:flex;align-items:center;gap:1rem}.group-card:hover{transform:translateY(-2px)}.group-card-clickable{cursor:pointer}.group-card-main{flex:1 1;min-width:0;color:inherit;text-decoration:none}.group-card-main:focus-visible h3,.group-card-main:hover h3{color:var(--primary)}.group-card-main:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.toggle{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle-track{position:relative;width:2.75rem;height:1.5rem;background:var(--toggle-off);border-radius:999px;transition:background .2s;flex-shrink:0}.toggle input:checked+.toggle-track{background:var(--toggle-on)}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--primary);outline-offset:2px}.toggle-thumb{position:absolute;top:.15rem;left:.15rem;width:1.2rem;height:1.2rem;background:var(--toggle-thumb);border-radius:50%;transition:transform .2s;box-shadow:var(--shadow)}.toggle input:checked+.toggle-track .toggle-thumb{transform:translateX(1.25rem)}.toggle-label{font-size:.9rem;color:var(--fg-muted);min-width:3.5rem}.toggle-icon-label{display:inline-flex;align-items:center;min-width:auto;color:var(--fg-muted)}.toggle-icon-label svg{display:block}.error{background:var(--error-bg);color:var(--error-fg);border:1px solid var(--error-border);border-radius:4px}.error,.success{padding:.75rem;margin-bottom:1rem}.success{background:var(--success-bg);color:var(--success-fg);border:1px solid var(--success-border);border-radius:4px}.status-banner{display:flex;align-items:flex-start;gap:.75rem}.status-banner-message{flex:1 1;margin:0;min-width:0}.status-banner-dismiss{flex-shrink:0;margin:-.25rem -.25rem -.25rem 0;padding:.25rem .45rem;border:none;border-radius:4px;background:transparent;color:inherit;font-size:1.25rem;line-height:1;cursor:pointer;opacity:.75}.status-banner-dismiss:focus-visible,.status-banner-dismiss:hover{opacity:1;background:color-mix(in srgb,currentColor 12%,transparent);outline:none}.status-banner-dismiss:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,currentColor 35%,transparent)}.settings-form{max-width:36rem;margin-top:1.5rem}.settings-fieldset{border:1px solid var(--border);border-radius:8px;padding:1.25rem 1.5rem;margin:0 0 1.25rem}.settings-fieldset legend{font-weight:600;padding:0 .35rem}.settings-hint{margin:0 0 1rem;color:var(--text-muted,var(--text-secondary));font-size:.95rem;line-height:1.45}.settings-option{display:flex;gap:.75rem;align-items:flex-start;padding:.75rem 0;cursor:pointer}.settings-option+.settings-option{border-top:1px solid var(--border)}.settings-option input{margin-top:.25rem;flex-shrink:0}.settings-option-detail{display:block;font-size:.9rem;color:var(--text-muted,var(--text-secondary));margin-top:.15rem}.settings-google-status p{margin:0 0 1rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative}.login-theme-toggle{position:absolute;top:1rem;right:1rem}.login-card{background:var(--bg-elevated);border-radius:8px;padding:2rem;box-shadow:var(--shadow-strong);border:1px solid var(--border);width:100%;max-width:400px}.login-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0;color:var(--fg-muted);font-size:.875rem}.login-divider:after,.login-divider:before{content:"";flex:1 1;height:1px;background:var(--border)}.login-divider span{flex-shrink:0}.btn-google{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;min-height:2.5rem;padding:.625rem 1rem;border-radius:4px;border:1px solid #dadce0;background:#fff;color:#1f1f1f;font-size:.9375rem;font-weight:500;letter-spacing:.01em;text-decoration:none;cursor:pointer;box-sizing:border-box;transition:background-color .15s ease,box-shadow .15s ease}.btn-google:hover{background:#f8f9fa;text-decoration:none;opacity:1}.btn-google:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn-google-mark{flex-shrink:0;display:block}.loading-screen{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:transparent;pointer-events:none;opacity:0;transition:opacity .42s ease;caret-color:transparent}.loading-screen-visible{opacity:1;pointer-events:all}.loading-spinner{width:3.75rem;height:3.75rem;border-radius:50%;background:var(--spinner-core);box-shadow:0 0 0 10px var(--spinner-halo),0 8px 28px var(--spinner-glow);animation:loading-pulse 1.4s ease-in-out infinite;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:grid;place-items:center}.loading-spinner-ring{width:100%;height:100%;border-radius:50%;background:conic-gradient(from 0deg,color-mix(in srgb,var(--primary) 12%,transparent) 0deg,var(--primary) 250deg,color-mix(in srgb,var(--primary) 12%,transparent) 1turn);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3.5px));animation:loading-spin .75s linear infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;caret-color:transparent}.nav-shell-frozen{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;caret-color:transparent}.nav-shell-frozen img{max-width:100%}.nav-shell-blur-target{filter:blur(0);opacity:1;transition:filter .42s ease,opacity .42s ease}.nav-shell-blurred{filter:blur(8px);-webkit-user-select:none;-moz-user-select:none;user-select:none}.nav-shell-blurred,.nav-shell-pending{pointer-events:none;caret-color:transparent}.nav-shell-pending{position:fixed;inset:0;opacity:0;overflow:hidden;z-index:-1;transition:none}.nav-shell-revealing{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}@keyframes loading-spin{to{transform:rotate(1turn)}}@keyframes loading-pulse{0%,to{box-shadow:0 0 0 10px var(--spinner-halo),0 8px 28px var(--spinner-glow)}50%{box-shadow:0 0 0 14px var(--spinner-halo-strong),0 10px 36px var(--spinner-glow-strong)}}.app-header-menu{position:fixed;inset:0;z-index:1200;display:flex;align-items:flex-end;justify-content:center}.app-header-menu-backdrop{position:absolute;inset:0;border:none;padding:0;margin:0;background:rgba(0,0,0,.45);cursor:pointer;animation:app-header-menu-fade-in .2s ease-out}.app-header-menu-sheet{position:relative;z-index:1;width:min(100%,28rem);max-height:min(80vh,28rem);overflow:auto;background:var(--bg-elevated);color:var(--fg);border-radius:16px 16px 0 0;box-shadow:var(--shadow-strong);padding:.5rem 1rem 1.25rem;animation:app-header-menu-slide-in .22s ease-out}.app-header-menu-leave .app-header-menu-backdrop{animation:app-header-menu-fade-out .2s ease-in forwards}.app-header-menu-leave .app-header-menu-sheet{animation:app-header-menu-slide-out .22s ease-in forwards;pointer-events:none}.app-header-menu-handle{width:2.5rem;height:.3rem;border-radius:999px;background:var(--sheet-handle);margin:.35rem auto .65rem}.app-header-menu-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.app-header-menu-top h2{margin:0;font-size:1.05rem;font-weight:600}.app-header-menu-close{border:none;background:none;font-size:1.6rem;line-height:1;color:var(--fg-muted);cursor:pointer;padding:.15rem .4rem}.app-header-menu-nav{display:flex;flex-direction:column;gap:.2rem}.app-header-menu-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--fg);font:inherit;font-size:1.05rem;font-weight:500;text-align:left;text-decoration:none;padding:.9rem .75rem;border-radius:10px;cursor:pointer;min-height:2.75rem}.app-header-menu-item:focus-visible,.app-header-menu-item:hover{background:var(--primary-soft);outline:none}.app-header-menu-logout{margin-top:.35rem;color:var(--danger);border-top:1px solid var(--border);border-radius:0 0 10px 10px}@keyframes app-header-menu-fade-in{0%{opacity:0}to{opacity:1}}@keyframes app-header-menu-fade-out{0%{opacity:1}to{opacity:0}}@keyframes app-header-menu-slide-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes app-header-menu-slide-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){.loading-screen,.nav-shell-blur-target{transition:none}.loading-spinner,.loading-spinner-ring{animation:none}.app-header-menu-backdrop,.app-header-menu-leave .app-header-menu-backdrop,.app-header-menu-leave .app-header-menu-sheet,.app-header-menu-sheet,.feedback-sheet-enter,.feedback-sheet-inline.feedback-sheet-enter,.feedback-sheet-inline.feedback-sheet-leave,.feedback-sheet-leave,.lightbox-image-enter-next,.lightbox-image-enter-prev,.lightbox-image-zoom-in,.lightbox-zoom-fallback{animation-duration:.01ms}::view-transition-group(*),::view-transition-new(*),::view-transition-old(*){animation:none!important}}