html,body{background-image:url(/assets/img/white-grid.png);font:1em Fira Sans,system-ui,sans-serif;margin:0;padding:0 1rem 3rem}.app header{margin-bottom:1rem}.app{display:flex;flex-direction:column;min-height:100vh}.app>main{flex:1 1 auto;padding-bottom:100px}.app>header{width:100vw;margin-left:calc(50% - 50vw);--header-color: #79787A;background-color:var(--header-color);padding:1.25rem 1rem;display:flex;align-items:center;justify-content:space-between;box-shadow:0 -6px 14px #0000000f,0 13px 31px #0003;position:sticky;top:0;z-index:999;overflow:visible}.app>header:before,.app>header:after{content:"";position:absolute;left:0;right:0;height:30px;pointer-events:none}.app>header:before{top:0;background:linear-gradient(to bottom,rgba(121,120,122,0),var(--header-color))}.app>header:after{bottom:0;background:linear-gradient(to top,rgba(121,120,122,0),var(--header-color))}.app>header:before,.app>header:after{z-index:0}.app>header>*{position:relative;z-index:1000}.app>header .header-left{display:flex;align-items:center;margin-left:30px}.app>header .header-left{gap:.75rem}.app>header .header-left .nav-link{color:#ffffff63;text-decoration:none;font-weight:600;padding:6px 12px;display:inline-block;border-radius:8px;background:#ffffff0a;transition:background .16s ease,transform .12s ease,box-shadow .16s ease,color .12s ease,opacity .12s ease;box-shadow:0 0 #0000}.app>header .header-left .nav-link.active{text-decoration:none;background:#ffffff1f;box-shadow:0 6px 18px #0000001f;color:#fff;opacity:1}.app>header .header-left .nav-link:hover{background:#ffffff1a;transform:translateY(-2px);color:#fff;opacity:1}.app>header .header-left .nav-link:focus{outline:2px solid rgba(255,255,255,.18);outline-offset:2px}.nav-disabled{pointer-events:none;opacity:.6;cursor:default;transform:none!important}.app>header .header-left .logout-btn{padding:6px 12px;border-radius:8px;margin-right:6px;display:inline-block;cursor:pointer;box-shadow:0 6px 18px #c528283d;transition:transform .12s ease,box-shadow .12s ease,background .12s ease;background:linear-gradient(180deg,#c13232,#8f1e1e);color:#fff;border:none}.app>header .header-left .logout-btn:hover{background:linear-gradient(180deg,#d54b4b,#9a2a2a);transform:translateY(-2px)}.app>header .header-left .logout-btn:focus{outline:3px solid rgba(255,200,200,.12);outline-offset:2px}.app>header .header-left .logout-btn:disabled,.app>header .header-left .logout-btn[aria-disabled=true]{opacity:.6;cursor:default;transform:none;box-shadow:none}.footer-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app>header h1{margin:0;align-self:flex-end;padding-top:0;padding-right:30px;text-align:right;background:-webkit-linear-gradient(#727277,#f5f5f6);background:linear-gradient(#727277,#f5f5f6);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:#fff;font-size:2.5em;font-weight:600;line-height:1}.gallery .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}.gallery .grid{transition:opacity .18s ease,transform .2s ease}.gallery .grid.fading{opacity:0;transform:scale(.997);pointer-events:none}.categories{margin:1rem 0 .5rem;text-align:center;position:-webkit-sticky;position:sticky;top:6.5rem;z-index:990;background:transparent;padding:.35rem 0}.categories-list{display:inline-flex;gap:.5rem;flex-wrap:nowrap;justify-content:center;align-items:center;overflow-x:auto;padding:.5rem .75rem;-webkit-overflow-scrolling:touch}.category-upload{margin-top:10px;text-align:center}.category-upload .upload-btn{width:30vw;min-width:120px;max-width:480px;display:inline-block}.upload-panel{background:#fff;color:#111;width:50vw;max-width:900px;min-width:320px;padding:18px;border-radius:8px;box-shadow:0 12px 36px #00000059;border:5px solid #000;box-sizing:border-box}.upload-title{margin:0 0 .5rem;font-size:1.1rem}.upload-form{display:flex;flex-direction:column;gap:.5rem}.upload-label{display:flex;flex-direction:column;gap:.25rem;font-weight:600}.upload-label input[type=text]{padding:6px 8px;border-radius:6px;border:1px solid rgba(0,0,0,.08);background:#fff;color:#111}.upload-label input[type=file]{margin-top:4px}.upload-include{display:flex;align-items:center;gap:.5rem;font-weight:600}.upload-include{display:flex;align-items:center;gap:.75rem}.upload-include .toggle{display:inline-block;position:relative;width:48px;height:30px}.upload-include .toggle input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;z-index:2;cursor:pointer}.upload-include .toggle-track{display:block;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:999px;background:#dfe6e1;transition:background .18s ease;box-shadow:inset 0 1px 2px #0000000f}.upload-include .toggle-thumb{position:absolute;top:4px;left:4px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #00000029;transform:translate(0);transition:transform .18s cubic-bezier(.2,.9,.3,1)}.upload-include .toggle input:checked+.toggle-track{background:#58b06b}.upload-include .toggle input:checked+.toggle-track .toggle-thumb{transform:translate(18px)}.upload-include .toggle input:focus+.toggle-track{box-shadow:0 0 0 4px #58b06b2e}.upload-include .upload-include-label{font-weight:600}.form-error{color:#a94442;background:#fdecea;padding:6px 8px;border-radius:6px}.upload-actions{display:flex;gap:.5rem;margin-top:6px;width:100%}.upload-actions .actions-left{display:flex;gap:.5rem;align-items:center}.upload-actions .actions-right{display:flex;gap:.5rem;align-items:center;margin-left:auto}.upload-actions .btn.primary{background:linear-gradient(180deg,#2a8f4a,#1f6f36);color:#fff}.upload-actions .btn.cancel{background:linear-gradient(180deg,#e25757,#c13232);color:#fff;border:0}.upload-actions .btn.cancel:hover{background:linear-gradient(180deg,#c13232,#8f1e1e);transform:translateY(-2px)}.upload-actions .btn.danger{background:linear-gradient(180deg,#ffd24d,#ffb300);color:#111;border:0}.upload-actions .btn.danger:hover{background:linear-gradient(180deg,#ffcf3a,#ffa700);transform:translateY(-1px)}.delete-confirm{display:flex;gap:.5rem;align-items:center}.delete-confirm span{font-weight:600;margin-right:6px}.delete-confirm .btn{padding:6px 8px}.image-modal-panel.upload-panel{background:#fff!important;color:#111!important}.image-modal-panel.upload-panel input,.image-modal-panel.upload-panel label,.image-modal-panel.upload-panel .upload-title,.image-modal-panel.upload-panel .upload-label{color:#111!important}.image-modal-panel.upload-panel input::placeholder{color:#666!important}.category-item{background:#ffffffeb;color:#222;border:1px solid rgba(0,0,0,.06);padding:6px 12px;border-radius:999px;cursor:pointer;font-weight:600;font-size:.95rem;transition:transform .12s ease,box-shadow .16s ease,background .12s ease,color .12s ease}.category-item.active{background:#0b0b0b;color:#fff;box-shadow:0 8px 24px #0000001f;transform:translateY(-2px)}.category-item:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000014}.category-item:focus{outline:2px solid rgba(0,0,0,.08);outline-offset:2px}@media (max-width: 640px){.categories{top:5.5rem;padding:.35rem 0}.category-item{padding:6px 10px;font-size:.9rem}}@media (max-width: 640px){.categories-list{flex-wrap:wrap;justify-content:center;overflow-x:visible;padding:.5rem .25rem;gap:.5rem .4rem}.categories-list .category-item{flex:0 1 auto}}.slide{background:#fff;border:10px solid #000000;aspect-ratio:1 / 1;display:flex;flex-direction:column;overflow:hidden;position:relative}.slide-wrap{position:relative;display:inline-block}.slide .edit-button,.slide-wrap .edit-button{position:absolute;top:8px;right:8px;z-index:6;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .14s ease,transform .14s ease;padding:6px;font-size:.85rem;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px}.slide-wrap:hover .edit-button,.slide-wrap:focus-within .edit-button,.slide:hover .edit-button,.slide:focus-within .edit-button{opacity:1;pointer-events:auto;transform:translateY(0)}.edit-button .fa-solid{font-size:16px;line-height:1;color:#111}.edit-button:focus{outline:3px solid rgba(255,210,74,.18);outline-offset:2px}@media (hover: none){.slide .edit-button,.slide-wrap .edit-button{display:none}}.slide img{width:100%;height:100%;object-fit:cover;flex:1 1 auto;display:block}.slide img.loading{filter:blur(8px) scale(1.02);transition:filter .4s ease,transform .4s ease}.slide img.loaded{filter:none;transform:none;transition:filter .4s ease,transform .4s ease}.slide.optimistic{box-shadow:0 6px 18px #0000001a}.optimistic-badge{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:#0009;display:flex;align-items:center;justify-content:center;z-index:5}.optimistic-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.optimistic-badge.success{background:#408040e6}.accounts-table tbody tr .user-edit-icon{opacity:0;pointer-events:none;transition:opacity .12s ease,transform .12s ease;color:#0009}.accounts-table tbody tr:hover .user-edit-icon{opacity:1;pointer-events:auto;color:#000000e6}.accounts-table tbody tr .icon-button{background:transparent;border:none;padding:4px;margin:0;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .12s ease,transform .12s ease;color:inherit}.accounts-table tbody tr:hover .icon-button,.accounts-table tbody tr:focus-within .icon-button,.accounts-table tbody tr td:hover .icon-button,.accounts-table tbody tr td:focus-within .icon-button{opacity:1!important;transform:translateY(0)!important;pointer-events:auto!important;z-index:5}.accounts-table tbody tr .user-edit-icon{opacity:0;transition:opacity .12s ease,transform .12s ease}.accounts-table tbody tr:hover .user-edit-icon,.accounts-table tbody tr:focus-within .user-edit-icon{opacity:1}.accounts-table tbody tr .user-edit-icon:focus{outline:none;opacity:1!important;transform:translateY(0)}.accounts-table tbody tr td .icon-button:focus{opacity:1!important;transform:translateY(0)!important;pointer-events:auto!important}.user-edit-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(180deg,#ffd24a,#d19b00)!important;color:#111;border:none;border-radius:8px;padding:6px 10px;font-size:.9rem;line-height:1;cursor:pointer;box-shadow:0 6px 18px #0000001f;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease}.user-edit-button:hover{transform:translateY(-2px)}.user-edit-button:focus{outline:3px solid rgba(255,210,74,.18);outline-offset:2px}.readonly-input{background:#f5f6f7;color:#666;border:1px solid rgba(0,0,0,.06);padding:.45rem .6rem;border-radius:6px;cursor:not-allowed}.readonly-input[readonly]{opacity:1}.group-delete-btn{background:linear-gradient(180deg,#e25757,#c13232);color:#fff;border:none;border-radius:6px;padding:6px 8px;font-size:.85rem;cursor:pointer}.group-delete-btn:hover{transform:translateY(-1px)}.group-delete-icon{color:#c13232;background:transparent;padding:4px;border-radius:6px;cursor:pointer;opacity:0;transition:opacity .12s ease,transform .12s ease,background .12s ease}.accounts-groups-panel ul li:hover .group-delete-icon,.accounts-groups-panel ul li:focus-within .group-delete-icon{opacity:1;transform:translateY(-1px);background:#c528280f}.group-delete-icon:focus{outline:3px solid rgba(197,40,40,.12);outline-offset:2px}.accounts-table{background:#fff;color:#111;border:5px solid #000;border-radius:8px;box-shadow:0 12px 36px #00000047;overflow:hidden;width:100%;max-width:none}.accounts-heading{display:inline-flex;align-items:center;gap:12px;margin:0;font-size:1.25rem}.accounts-add-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:4px;background:linear-gradient(180deg,#3aa16b,#15824b);color:#fff;border:none;border-radius:8px;cursor:pointer;box-shadow:0 6px 18px #0000001f;transition:transform .12s ease,box-shadow .12s ease}.accounts-add-btn svg{width:18px;height:18px;display:block}.accounts-add-btn:hover{transform:translateY(-2px)}.accounts-add-btn:focus{outline:3px solid rgba(0,150,80,.12);outline-offset:2px}.accounts-heading+.accounts-table-wrapper{margin-top:24px}.accounts-page{padding-top:24px}.accounts-table thead th{background:linear-gradient(180deg,#f5f5f6,#e9e9ea);color:#222;font-weight:700;padding:8px;text-align:left;border-bottom:1px solid #ddd}.accounts-table tbody td{padding:8px;border-bottom:1px solid #eee;vertical-align:middle}.accounts-table tbody tr:nth-child(2n){background:#00000005}.accounts-table tbody tr:hover{background:#0000000a}.accounts-table td:first-child{font-weight:600;color:#0b0b0b}.accounts-table-wrapper{width:100vw;margin-left:calc(50% - 50vw);padding:0 1rem;box-sizing:border-box;overflow-x:auto}.accounts-divider{width:75%;max-width:1100px;margin:48px auto 24px;border:none;border-top:2.5px solid #000}.accounts-groups-panel{background:#fff;border:5px solid #000;border-radius:8px;padding:12px;box-shadow:0 8px 20px #0000001f;margin-top:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.modal-panel{background:#fff;color:#111;width:min(680px,95vw);padding:20px;border-radius:10px;box-shadow:0 20px 60px #00000073;border:5px solid #000}.modal-form{display:grid;gap:12px}.modal-form h3{margin:0 0 6px}.modal-form label{display:flex;flex-direction:column;gap:6px;font-weight:600}.modal-form input[type=text],.modal-form select{padding:8px;border-radius:6px;border:1px solid #ddd}.checkbox-row{display:flex;align-items:center;gap:12px;font-weight:500}.checkbox-row-inline{display:flex;gap:18px;align-items:center}.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .slider{display:inline-block;width:44px;height:26px;background:#d9d9d9;border-radius:999px;position:relative;transition:background .18s ease}.switch .slider:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 2px 6px #0000001f;transition:transform .18s ease}.switch input:checked+.slider{background:#4caf50}.switch input:checked+.slider:after{transform:translate(18px)}.switch:focus-within .slider{box-shadow:0 0 0 4px #4caf5014}.switch-label{font-weight:600}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.btn-cancel{--cancel-top: #c13232;--cancel-bottom: #8f1e1e;background:linear-gradient(180deg,var(--cancel-top),var(--cancel-bottom));color:#fff;border:none;padding:.5rem .9rem;border-radius:8px;cursor:pointer;box-shadow:0 6px 18px #c528283d;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}@media (max-width: 640px){.accounts-table thead th{padding:10px 8px;font-size:.95rem}.accounts-table tbody td{padding:8px;font-size:.95rem}}.app>header{--header-child-gap: .5rem}@media (max-width: 640px){.app>header{flex-direction:column;align-items:stretch;padding:.75rem}.app>header h1{align-self:stretch;text-align:center;font-size:1.8rem;margin:0 0 .5rem;padding:0;order:0}.app>header .header-left{margin-left:0;display:flex;justify-content:center;gap:var(--header-child-gap);flex-wrap:wrap;order:1;padding:.25rem 0}.app>header .header-left .nav-link,.app>header .header-left .logout-btn{padding:8px 10px;font-size:.95rem;border-radius:8px}.app>header:before,.app>header:after{height:22px}}.optimistic-badge svg{display:block}.slide figcaption{position:absolute;left:0;right:0;bottom:0;padding:.125rem 0;text-align:center;background:#000000b3;color:#fff;transform:translateY(100%);opacity:0;transition:transform .25s ease,opacity .25s ease;pointer-events:none}.slide:hover figcaption{transform:translateY(0);opacity:1;pointer-events:auto}.image-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999}.image-modal-panel{position:relative;max-width:95vw;max-height:95vh;background:#000;padding:.5rem;border-radius:6px;box-shadow:0 10px 30px #0009}.image-modal-panel img{display:block;max-width:100%;max-height:80vh;object-fit:contain}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.slideshow{display:flex;flex-direction:column;align-items:center;padding:1rem 0 2rem}.slideshow-panel{display:flex;align-items:center;gap:1rem}.slideshow-figure{position:relative;width:min(80vw,900px);height:min(65vh,600px);overflow:hidden;background:#fff;border:6px solid #000;display:block}.slideshow-figure.suppress .slideshow-image{transition:none!important;-webkit-transition:none!important}.slideshow-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center center;transition:opacity .6s ease;-webkit-transition:opacity .6s ease;will-change:opacity;opacity:1;background:#fff}.slideshow-image.single{position:relative;width:100%;height:100%;object-fit:contain}.slideshow-image.current{z-index:1}.slideshow-image.current.fade-out{opacity:0}.slideshow-image.next{z-index:2;opacity:0}.slideshow-image.next.fade-in{opacity:1}.slideshow-btn{background:#00000014;border:none;color:#fff;padding:8px 12px;border-radius:6px;cursor:pointer}.slideshow-controls{display:flex;align-items:center;gap:1rem;margin-top:.75rem}.slideshow-dots{display:flex;gap:6px}.dot{width:10px;height:10px;border-radius:50%;background:#ffffff59;border:none}.dot.active{background:#fff}.slideshow-caption{margin-top:.75rem;text-align:center;color:#111;font-weight:600;background:transparent;width:min(80vw,900px);margin-left:auto;margin-right:auto}.site-footer{width:100vw;margin-left:calc(50% - 50vw);background:#0a0a0acc;color:#f0f0f0;padding:.5rem 1rem;font-size:.855rem}.site-footer .footer-inner{max-width:1100px;margin:0;padding-left:1rem;padding-right:1rem;text-align:left}.site-footer .footer-inner{display:flex;align-items:center;gap:.5rem}@media (max-width: 640px){.site-footer .footer-inner{flex-direction:column;align-items:center;text-align:center;padding-left:.5rem;padding-right:.5rem;gap:.35rem}}.footer-login{display:inline-flex;align-items:center;justify-content:center;color:#f0f0f0;text-decoration:none;margin-right:.5rem;padding:.15rem;border-radius:6px;transition:background .15s ease,transform .1s ease}.footer-login svg{width:1rem;height:1rem;fill:currentColor}.footer-login:hover,.footer-login:focus{background:#ffffff0a;transform:translateY(-1px);outline:none}.login-page{display:flex;justify-content:center;padding:2rem 1rem}.login-form{width:100%;max-width:420px;background:#fff;padding:1.25rem;border-radius:8px;box-shadow:0 6px 24px #00000014}.login-form{border:1px solid #000}.login-form h2{margin:0 0 .75rem}.login-form label{display:block;margin-bottom:.75rem;color:#222;font-weight:600}.login-form input[type=text],.login-form input[type=password]{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:6px;margin-top:.25rem}.form-actions{display:flex;justify-content:flex-end}.btn{background:linear-gradient(180deg,#0f1720,#0b0f14);color:#fff;border:none;padding:.5rem .9rem;border-radius:8px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.btn{--btn-gap: .625rem;--btn-pad-x: .75rem;--btn-pad-y: .4rem;display:inline-flex;align-items:center;gap:var(--btn-gap);color:#fff;background:linear-gradient(180deg,#3aa16b,#15824b);padding:var(--btn-pad-y) var(--btn-pad-x);border-radius:8px;border:0;cursor:pointer;transform-origin:center;transition:transform .08s ease,filter .08s ease,opacity .12s ease}.btn:hover{transform:translateY(-2px)}.btn:hover .btn:hover{transform:translateY(-2px);background:linear-gradient(180deg,#0b5d1f,#06320a)}.btn:active{transform:translateY(0)}.btn:focus{outline:3px solid rgba(255,255,255,.06);outline-offset:2px}.form-error{color:#b00020;margin-bottom:.5rem}.form-message{color:#161;margin-bottom:.5rem}.slideshow-caption.caption-fade{opacity:.85}.slideshow-caption .slide-title{font-weight:700;margin-bottom:.25rem}.slideshow-caption .slide-category{font-weight:400;color:#666;font-size:.95rem}.slideshow-caption .slide-date{font-weight:400;color:#444;font-size:.9rem;margin-top:.25rem}.slideshow-caption .slide-category{margin-top:.35rem}.slideshow-caption .category-link{display:inline-block;padding:.18rem .5rem;margin:0 .15rem;background:#0000000f;color:#222;border-radius:6px;text-decoration:none;font-size:.95rem;font-weight:600;transition:background .15s ease,color .15s ease,transform .12s ease;box-shadow:0 1px #0000000a inset}.slideshow-caption .category-link:hover,.slideshow-caption .category-link:focus{background:#0000001f;color:#000;transform:translateY(-1px);outline:none}.slideshow-caption .category-link:active{transform:translateY(0)}
