:root{font-family:Arial,Helvetica,sans-serif;color:#172328;background:#f7f6f2;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:#173b40}.topbar{height:78px;background:#fff;border-bottom:1px solid #e4e9e5;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar>span{color:#81928e;font-size:.85rem}.brand{display:flex;align-items:center;gap:11px;font-size:.82rem;font-weight:800;letter-spacing:.18em;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border:1.5px solid #173b40;border-radius:8px 2px 8px 2px;font:italic 24px Georgia,serif;letter-spacing:0}.container{max-width:1200px;margin:auto;padding:44px clamp(18px,5vw,65px) 96px}.eyebrow{font-size:.75rem;letter-spacing:.18em;font-weight:800;color:#a17a55;text-transform:uppercase}.heading{font:500 clamp(2.1rem,4vw,3.5rem)/1.15 Georgia,serif;letter-spacing:-.03em;margin:12px 0 14px}.subtle{color:#6c7e79;line-height:1.55}.row{display:flex;align-items:center;gap:12px}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:grid;gap:14px}.panel{background:#fff;border:1px solid #e0e7e1;border-radius:12px;padding:25px;box-shadow:0 5px 20px #18373207}.panel h2{font-size:1.15rem;margin:0 0 14px}.btn{border:0;border-radius:8px;background:#173b40;color:#fff;padding:11px 17px;min-height:44px;font-weight:700}.btn:hover{background:#24555b}.btn.light{background:#ecf2ef;color:#173b40}.btn.light:hover{background:#dceae4}.btn.danger{background:#b34338}.btn.small{min-height:36px;padding:7px 12px;font-size:.85rem}.field{display:grid;gap:8px;font-weight:700;color:#304948;font-size:.88rem}.field input{width:100%;border:1px solid #cddbd4;border-radius:7px;padding:11px 12px;min-height:44px;background:white}.field input:focus,.btn:focus-visible,.heart:focus-visible{outline:3px solid #81aea6;outline-offset:2px}.login{max-width:420px;margin:8vh auto;padding:0 18px}.login .panel{padding:32px}.login form{margin-top:22px}.dashboard{display:grid;grid-template-columns:minmax(250px,340px) minmax(0,1fr);gap:24px;align-items:start;margin-top:28px}.list{display:grid;gap:9px}.list button{text-align:left;background:#fff;border:1px solid #dce5df;border-radius:8px;padding:14px;color:#23433f}.list button:hover,.list button.active{background:#edf5f0;border-color:#7ca399}.list small{display:block;margin-top:6px;color:#81948d}.metric{margin:6px 0 18px;height:9px;background:#e8eee9;border-radius:20px;overflow:hidden}.metric i{display:block;height:100%;background:#af8a63}.share{padding:15px;background:#eff5f0;border-radius:8px;overflow-wrap:anywhere}.share a{font-weight:700}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}.photo-card{background:#fff;border:1px solid #e1e8e2;border-radius:9px;overflow:hidden}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#e5ece6;cursor:zoom-in}.photo-meta{display:flex;align-items:center;gap:8px;min-height:52px;padding:8px 12px}.photo-meta span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.81rem;color:#61726c}.heart{background:none;border:0;color:#75918a;font-size:1.75rem;line-height:1;padding:5px}.heart.chosen{color:#c05d62}.selection-box{margin-top:30px;padding:22px;background:#eaf1eb;border-radius:10px}.selection-box form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.selection-box .field{min-width:230px;flex:1}.count{font-weight:700;color:#477568}.selection{border-top:1px solid #e3eae5;padding:16px 0}.selection:first-of-type{border:0}.selection strong{display:block;margin-bottom:7px}.selection .subtle{font-size:.85rem;margin:5px 0 11px;overflow-wrap:anywhere}.thumbs{display:flex;gap:5px;flex-wrap:wrap;margin-top:20px}.thumbs img{width:56px;height:56px;object-fit:cover;border-radius:4px}.loading,.empty{padding:50px 0;color:#7b8f87;text-align:center}.error{color:#b34338}.top-gap{margin-top:20px}.file-input{width:100%;padding:12px;border:1px dashed #a2b6aa;border-radius:8px;background:#f8faf8}.notice{font-size:.88rem;color:#788982;line-height:1.55}.foot{border-top:1px solid #e4e8e2;margin-top:28px;padding-top:20px}.hidden{display:none!important}#toast:not(:empty){position:fixed;right:20px;bottom:20px;max-width:360px;background:#173b40;color:#fff;padding:13px 18px;border-radius:8px;box-shadow:0 10px 35px #1235;z-index:30}@media(max-width:850px){.dashboard{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.container{padding-top:30px}.topbar>span{display:none}.photo-grid{grid-template-columns:1fr}.panel{padding:19px}.selection-box form{display:grid}.selection-box .field{min-width:0}}

.gallery-downloads{margin-top:18px}.gallery-downloads+.notice{margin:9px 0 0}.photo-download{border:0;background:#ecf2ef;color:#173b40;border-radius:6px;padding:7px 9px;font-size:.75rem;font-weight:700;white-space:nowrap}.photo-download:hover{background:#dceae4}

.gallery-tabs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:26px}
.gallery-tab{border:1px solid #bed1c8;border-radius:24px;background:#fff;color:#285048;font-weight:700;min-height:44px;padding:9px 17px}
.gallery-tab.active{background:#173b40;color:#fff;border-color:#173b40}
.gallery-tab:focus-visible{outline:3px solid #81aea6;outline-offset:2px}
.gallery-tabs+.photo-grid{margin-top:16px}

/* Album viewer: the entire photo stays visible, with selection and navigation on screen. */
body.lightbox-open{overflow:hidden}
.lightbox{position:fixed;inset:0;z-index:20;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#101817f5;color:#fff;height:100vh;height:100dvh}
.lightbox button{cursor:pointer;border:0;font:inherit}
.lightbox-top{display:flex;align-items:center;justify-content:space-between;min-height:56px;padding:8px 16px 8px max(16px,env(safe-area-inset-left));font-weight:700}
.lightbox-close{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#ffffff26;color:#fff;font-size:2rem!important;line-height:1}
.lightbox-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;padding:0 58px}
.lightbox-stage img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;touch-action:pan-y;user-select:none}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:64px;border-radius:10px;background:#ffffff2b;color:#fff;font-size:2.5rem!important;line-height:1}
.lightbox-nav:hover,.lightbox-close:hover{background:#ffffff45}
.lightbox-nav:disabled{opacity:.3;cursor:default}
.lightbox-prev{left:8px}.lightbox-next{right:8px}
.lightbox-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:76px;padding:12px max(16px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.lightbox-filename{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;color:#e5ece9}
.lightbox-heart{flex:none;min-width:126px;min-height:48px;padding:9px 14px;border-radius:28px;background:#fff;color:#173b40;font-weight:800!important}
.lightbox-heart.chosen{background:#c05d62;color:#fff}
.lightbox button:focus-visible,[data-open]:focus-visible{outline:3px solid #a9d4c9;outline-offset:2px}
@media(max-width:520px){.lightbox-stage{padding:0 6px}.lightbox-nav{width:42px;height:52px;background:#17232899;font-size:2rem!important}.lightbox-prev{left:2px}.lightbox-next{right:2px}.lightbox-bottom{flex-wrap:wrap;justify-content:center;gap:10px;padding-top:12px}.lightbox-filename{flex-basis:100%;text-align:center}.lightbox-heart{width:min(100%,250px)}.photo-card img{aspect-ratio:4/3}}

.lightbox-actions{display:flex;align-items:center;gap:10px;flex:none}
.lightbox-download{min-height:48px;padding:9px 15px;border-radius:28px;background:#ffffff26;color:#fff;font-weight:800!important}
.lightbox-download:hover{background:#ffffff45}
@media(max-width:520px){.lightbox-actions{width:100%}.lightbox-actions .lightbox-download,.lightbox-actions .lightbox-heart{width:auto;flex:1;min-width:0;white-space:nowrap}}

.brand-mark{font:italic 17px Georgia,serif;letter-spacing:-.08em;padding-right:2px}
.album-title-row{display:flex;align-items:baseline;gap:12px;min-width:0}
.album-title{margin:0!important;color:#a46a1b;font:700 clamp(1.35rem,2.8vw,2.25rem)/1.2 Georgia,serif!important;letter-spacing:.025em;text-transform:uppercase;overflow-wrap:anywhere}
.album-photo-count{white-space:nowrap;font-weight:700;color:#5e746d}
.share-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.copy-link{background:#173b40!important;color:#fff!important;font-weight:800;display:inline-flex;align-items:center;gap:7px}
.copy-link:hover{background:#24555b!important}
.copy-link svg{width:17px;height:17px;flex:none}
.upload-heading{color:#173b70;font-weight:800;text-transform:uppercase;letter-spacing:.055em}
.thumb-button{border:0;background:transparent;padding:0;border-radius:5px;cursor:zoom-in}
.thumb-button img{display:block}
.thumb-button:focus-visible{outline:3px solid #81aea6;outline-offset:2px}
.lightbox.admin-preview .lightbox-bottom{justify-content:center}
