:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#21372e;background:#f8f5ed;accent-color:#a52d39}*{box-sizing:border-box}body{margin:0}.site-header{padding:20px 16px;background:#174535;color:#fffdf6;text-align:center;border-bottom:4px solid #d7b36a}.brand h1{font-family:Georgia,serif;margin:0;letter-spacing:.01em;font-size:2.15rem}.hero{height:clamp(180px,32vw,365px);max-width:1100px;margin:0 auto;overflow:hidden;background:linear-gradient(115deg,#194936,#375e4b 50%,#a92535)}.hero img{display:block;width:100%;height:100%;object-fit:cover}main{max-width:620px;margin:28px auto;padding:28px}main.wide{max-width:1100px}.panel{background:#fffefa;border:1px solid #e5e1d5;border-radius:14px;box-shadow:0 5px 24px #123c2c12}.login-panel{max-width:520px;margin-top:24px}h2{margin-top:0;color:#194936}p{line-height:1.5}label{display:block;font-weight:600;margin:18px 0}input,select{display:block;width:100%;padding:12px;margin-top:7px;border:1px solid #b9c5b8;border-radius:8px;font:inherit;background:#fff;color:#21372e}input:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #d8b162;outline-offset:2px}input[type=file]{padding:15px}input[type=checkbox]{width:17px;height:17px;margin:0;flex:none;cursor:pointer}button{border:0;background:#a52d39;color:#fff;padding:12px 18px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}button:hover:not(:disabled){background:#8d1e2b}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#e7efe6;color:#174535}.secondary:hover:not(:disabled){background:#d1e2d2}.danger{background:#fff3f3;color:#922f36;border:1px solid #e7bfc4;padding:8px 12px}.danger:hover:not(:disabled){background:#f9dfe1}nav{max-width:1100px;margin:18px auto 0;padding:0 16px;display:flex;align-items:center;justify-content:space-between}small,.hint{color:#627064}.hint{font-size:.9rem}.photo-row{display:flex;flex-direction:column;gap:6px;padding:16px 0;border-bottom:1px solid #eae8db;overflow-wrap:anywhere}.photo-row:last-child{border-bottom:0}.quality{font-size:.86rem}.low{color:#a52e2e}.fair,.unknown{color:#8a5d00}.good,.excellent{color:#24704d}.toolbar,.actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.actions{justify-content:flex-start}.actions a{color:#8b2532;font-weight:600}.page-footer{text-align:center;padding:0 16px 35px;font-size:.84rem}.page-footer a{color:#566b5d;text-decoration:underline;text-underline-offset:3px}.hero-admin{padding:0 0 25px;margin-bottom:25px;border-bottom:1px solid #e8e4d5}.hero-editor{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.hero-editor img{width:240px;height:130px;object-fit:cover;background:linear-gradient(135deg,#1c513d,#9b3544);border-radius:10px}.hero-editor>div{flex:1;min-width:210px}.hero-editor label{margin:0 0 12px}.hero-editor input{margin-top:8px}.hero-editor button{margin-top:2px}.gallery-toolbar{margin-bottom:15px;align-items:flex-start}.gallery-toolbar h2{margin-bottom:5px}.gallery-toolbar .hint{margin:0}.toolbar-buttons{display:flex;flex-wrap:wrap;gap:8px}.group-title{background:#edf2e9;padding:12px 16px;border-bottom:1px solid #d6dfd2;border-radius:10px 10px 0 0}.group-select{margin:0;display:flex;align-items:center;gap:10px;font-weight:700;cursor:pointer}.group-select small{font-weight:400;margin-left:auto}.contributor-group{border:1px solid #d6dfd2;border-radius:10px;margin:20px 0;overflow:hidden}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;padding:14px}.gallery-card{position:relative;border:1px solid #e0e5dd;border-radius:10px;overflow:hidden;background:#fff}.photo-selection{position:absolute;z-index:1;top:8px;left:8px;margin:0;padding:9px;background:#fffffff2;box-shadow:0 1px 8px #123c2c33;border-radius:7px}.thumb-frame{height:160px;background:#e6e8e1;display:grid;place-items:center;overflow:hidden}.thumb-frame img{width:100%;height:100%;object-fit:cover}.thumb-unavailable:after{content:"Preview unavailable";color:#637065;font-size:.8rem}.gallery-card-body{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:12px;min-width:0}.filename{overflow-wrap:anywhere;font-size:.95rem}.gallery-card-body small{font-size:.78rem}.gallery-card .actions{margin-top:6px;width:100%;justify-content:space-between}.gallery-card .actions a{font-size:.86rem}@media(max-width:640px){main{margin:12px;padding:20px}.hero{height:210px}.brand h1{font-size:1.8rem}.login-panel{margin-top:16px}.gallery-toolbar{display:block}.toolbar-buttons{margin-top:15px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px}.thumb-frame{height:125px}.gallery-card-body{padding:8px}.gallery-card .actions{gap:8px}}.duplicate-status{color:#9a3242;font-weight:700}.duplicate-tools{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 17px;margin:4px 0 12px;border:1px solid #d9d6c5;border-radius:10px;background:#f5f7ed;flex-wrap:wrap}.duplicate-tools p{margin:5px 0 0}.duplicate-actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.inline-check{display:flex;flex-direction:row;align-items:center;gap:9px;margin:0;font-size:.9rem}.duplicate-badge{display:inline-block;font-size:.75rem;font-weight:750;border-radius:6px;padding:5px 7px;color:#8f2132;background:#fce7eb;border:1px solid #e2b3be}.gallery-card[hidden],.contributor-group[hidden]{display:none!important}.deadline-notice{background:#f7ede0;border-left:4px solid #b78a38;border-radius:0 8px 8px 0;padding:13px 16px;font-weight:650;color:#6d3035;margin:18px 0 20px}body.uploading{overflow:hidden}.upload-overlay{position:fixed;z-index:5000;top:0;right:0;bottom:0;left:0;padding:20px;display:grid;place-items:center;background:#0a2019d1}.upload-progress-card{width:min(100%,460px);border:2px solid #dfc27f;border-radius:18px;background:#fffefa;box-shadow:0 15px 70px #071b1580;padding:32px 26px;text-align:center}.progress-emblem{font-size:2rem;line-height:1;color:#b78a38;margin-bottom:12px}.upload-progress-card h2{margin:0 0 16px;font-size:1.7rem}.progress-filename{font-weight:600;overflow-wrap:anywhere;min-height:42px}.progress-meter{height:17px;overflow:hidden;border-radius:999px;background:#dce5d9;border:1px solid #b6c6ba;margin-top:20px}#upload-progress-fill{width:0;height:100%;background:linear-gradient(90deg,#a72e40,#194936);transition:width .12s linear}.progress-amount{font-weight:800;font-size:1.65rem;color:#174535;margin:11px 0 5px}.progress-count{margin:0 0 10px;font-weight:600}.upload-progress-card .hint{margin:15px auto 0;max-width:340px}.finished-panel{text-align:center;max-width:630px;padding:38px 30px}.finished-mark{background:#e5f0e5;color:#176344;border-radius:50%;width:64px;height:64px;display:grid;place-items:center;font-weight:800;font-size:2rem;margin:0 auto 18px}.finished-panel h2{font-size:2rem}.finished-count{color:#174535;font-size:1.35rem}.finished-count strong{font-size:3.5rem;display:block;line-height:1.2}.finished-honor{font:italic 1.38rem/1.45 Georgia,serif;color:#8d2e3c;padding:12px 6px}.finished-detail{background:#f5f0e6;border-radius:8px;padding:11px}.finished-panel>button{margin:18px auto 0}.failed-list{text-align:left;border:1px solid #ddb1b7;border-radius:10px;background:#fff4f4;margin:20px 0;padding:16px 20px}.failed-list h3{color:#912f3a;margin:0 0 5px}.failed-list ul{overflow-wrap:anywhere;padding-left:20px}@media(prefers-reduced-motion:reduce){#upload-progress-fill{transition:none}}@media(max-width:640px){.upload-progress-card{padding:27px 18px}.finished-panel{padding:30px 20px}.finished-honor{font-size:1.2rem}}.exif-trigger{position:absolute;top:8px;right:8px;z-index:3;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:2px solid #f6edce;background:#174535;color:#fff;font:700 italic 21px/1 Georgia,serif;padding:0;box-shadow:0 2px 8px #0b241a55}.exif-trigger:hover:not(:disabled),.exif-trigger[aria-expanded=true]{background:#a52d39}.exif-popover{position:fixed;z-index:4000;width:min(380px,calc(100vw - 24px));max-height:72vh;overflow-y:auto;border:2px solid #d7b36a;border-radius:12px;background:#fffefa;box-shadow:0 12px 42px #0b241a5e;color:#21372e;padding:0}.exif-popover[hidden]{display:none}.exif-popover-heading{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;background:#174535;color:#fff;font-size:.95rem}.exif-close{background:transparent;color:#fff;border:1px solid #ffffff80;font-size:1.5rem;line-height:1;padding:2px 9px}.exif-close:hover:not(:disabled){background:#a52d39}.exif-popover-content{padding:12px 14px 15px}.exif-popover-content h3{font-size:.82rem;color:#174535;text-transform:uppercase;letter-spacing:.06em;margin:14px 0 8px}.exif-filename{font-weight:750;font-size:.9rem;overflow-wrap:anywhere;margin:0 0 8px}.exif-list{margin:0}.exif-row{display:grid;grid-template-columns:minmax(95px,42%) minmax(0,1fr);border-bottom:1px solid #ebebdf;gap:8px;padding:5px 0;font-size:.79rem}.exif-row dt{font-weight:650;color:#536b5b;overflow-wrap:anywhere}.exif-row dd{margin:0;color:#253a2e;overflow-wrap:anywhere}.exif-status{color:#627064;font-size:.83rem;margin:10px 0}.exif-privacy-note{font-size:.76rem;font-style:italic;color:#6f5c34;margin-bottom:0}.bulk-delete{white-space:nowrap}@media(max-width:640px){.exif-trigger{width:32px;height:32px;font-size:19px;top:6px;right:6px}.exif-popover{max-height:75vh}}
