@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url('fonts/manrope-latin-ext.woff2') format('woff2');unicode-range:U+0100-02FF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url('fonts/manrope-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{color-scheme:dark;--bg:#0f1115;--panel:#191c23;--text:#eeedf3;--muted:#9295a3;--line:#282b35;--accent:#bcadf8}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--bg);color:var(--text);font-family:Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased}
body:before{content:'';position:absolute;inset:0 0 auto auto;width:65%;height:580px;background:radial-gradient(ellipse at 75% 0%,#5b427419,transparent 65%);pointer-events:none;z-index:-1}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
::selection{background:#6c5a97;color:white}
.wrap{width:calc(100% - 112px);max-width:1320px;margin-inline:auto}
.skip-link{position:fixed;top:12px;left:12px;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;z-index:10;background:var(--accent);color:#161222;border-radius:10px}
.skip-link:focus{clip-path:none;width:auto;height:auto;padding:12px 18px}
.header{height:100px;display:flex;align-items:center;justify-content:space-between;gap:25px}
.brand{display:flex;align-items:center;font-size:21px;font-weight:750;letter-spacing:-.8px}
.brand-icon{width:38px;height:38px;display:grid;place-items:center;margin-right:11px;border-radius:13px;background:#292438;transform:rotate(-7deg);transition:transform .2s}
.brand-icon svg{width:23px;height:23px;fill:none;stroke:var(--accent);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.brand:hover .brand-icon{transform:rotate(5deg)}
.brand-dot{color:var(--accent)}
.header-note{font-size:12px;color:#858393;transform:rotate(-3deg);font-style:italic}
.header-note>span{display:inline-block;color:var(--accent);margin-left:10px}
.header-link{font-size:12px;display:flex;align-items:center;gap:10px;color:#c2c1ca}
.header-link>span{font-size:10px;background:#20232b;color:#a4a4b1;border:1px solid var(--line);padding:3px 7px;border-radius:7px;font-variant-numeric:tabular-nums}
.intro{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:45px 0 52px}
.hello{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:10px;margin:0 0 21px}
.hello>svg{width:20px;height:20px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round}
h1{font-weight:650;font-size:clamp(48px,5.4vw,75px);line-height:1.08;letter-spacing:-3.5px;margin:0 0 28px}
.title-accent{display:inline-block;position:relative;color:var(--accent)}
.title-accent svg{position:absolute;left:-3px;bottom:-11px;width:100%;height:13px;fill:none;stroke:#b3a2ec88;stroke-width:2;stroke-linecap:round}
.intro-text{font-size:13px;color:var(--muted);line-height:1.9;margin:0}
.intro-doodle{width:240px;margin-right:8%;color:#706984;transform:rotate(-5deg);position:relative;padding-bottom:20px}
.intro-doodle>svg{width:100%;height:auto;overflow:visible}
.flight-path{fill:none;stroke:#686177;stroke-width:1.4;stroke-dasharray:4 6;stroke-linecap:round}
.doodle-drone{fill:none;stroke:#b3a1dc;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.spark{fill:none;stroke:#8b7da6;stroke-width:1.4;stroke-linecap:round}
.intro-doodle>span{display:block;text-align:center;font-style:italic;font-size:12px;line-height:1.7;transform:rotate(2deg);margin-top:-5px}
.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0 23px;border-top:1px solid var(--line)}
.filters{display:flex;flex-wrap:wrap;gap:6px}
.filter{border:1px solid transparent;border-radius:12px;padding:9px 15px;color:var(--muted);background:transparent;min-height:39px;font-size:11px;display:flex;align-items:center;gap:10px;transition:background .2s,color .2s,border-color .2s}
.filter:hover{background:#20212a;color:var(--text)}
.filter.selected{background:#2e293e;border-color:#49405e;color:#e3d9ff}
.filter span{font-size:9px;opacity:.5;font-variant-numeric:tabular-nums}
.counter{font-size:10px;color:#757a88;white-space:nowrap;font-variant-numeric:tabular-nums}
.grid{columns:3;column-gap:20px}
.card{break-inside:avoid;margin:0 0 23px;min-width:0;position:relative;overflow:hidden;border:1px solid #292c35;border-radius:17px;background:#181b22;transition:border-color .25s,transform .25s;isolation:isolate}
.card:hover{border-color:#51485e;transform:translateY(-3px)}
.photo-button{display:block;position:relative;overflow:hidden;width:100%;aspect-ratio:1.22;border:0;padding:0;background:#242934;color:white;text-align:left}
.card:nth-child(3n+2) .photo-button{aspect-ratio:.94}
.card:nth-child(5n+1) .photo-button{aspect-ratio:1.4}
.photo-button img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1),filter .3s}
.photo-button:hover img{transform:scale(1.035);filter:brightness(1.05)}
.photo-num{position:absolute;left:16px;top:14px;font-size:9px;color:#ffffffe0;letter-spacing:1px;text-shadow:0 1px 6px #000}
.expand{position:absolute;right:13px;bottom:13px;width:33px;height:33px;display:grid;place-items:center;border:1px solid #ffffff44;border-radius:11px;background:#1e233270;backdrop-filter:blur(8px);opacity:0;transform:translateY(4px);transition:opacity .2s,transform .2s}
.expand svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3}
.photo-button:hover .expand,.photo-button:focus-visible .expand{opacity:1;transform:none}
.card-info{display:flex;align-items:center;justify-content:space-between;padding:16px 17px 17px;gap:12px}
.card-info h3{font-size:12px;line-height:1.5;font-weight:600;margin:0 0 4px;letter-spacing:-.15px}
.card-info p{font-size:10px;line-height:1.5;color:#858a99;margin:0}
.album-tag{color:#b4a7cc;background:#282332;padding:5px 8px;border-radius:7px;white-space:nowrap;font-size:9px}
.demo-notice{display:flex;justify-content:center;align-items:center;gap:8px;text-align:center;font-size:10px;color:#767987;line-height:1.7;margin:16px 0 0}
.demo-notice>span{font-size:17px;color:#a397bc}
.empty{font-size:13px;color:var(--muted);padding:40px 0;column-span:all}
.image-error{position:absolute;inset:40% 10px auto;text-align:center;background:#161822e0;padding:14px;border-radius:9px;font-size:12px}
footer{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);padding:28px 0 34px;margin-top:64px!important}
footer>p{margin:0;font-size:12px;color:#9b98aa}
footer>p>span{margin-left:4px;color:var(--accent)}
.back-top{display:flex;align-items:center;gap:10px;font-size:10px;color:#818493}
.back-top svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform .2s}
.back-top:hover svg{transform:translateY(-3px)}
body.modal-open{overflow:hidden}
dialog{border:1px solid #34313f;border-radius:20px;padding:22px 30px 26px;background:#13151b;color:var(--text);width:min(1380px,96vw);max-width:96vw;max-height:96dvh;box-shadow:0 30px 120px #0008}
dialog::backdrop{background:#080a10eb;backdrop-filter:blur(16px)}
.lightbox-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;font-size:11px;color:var(--muted)}
.lightbox-brand{font-size:17px;font-weight:650;color:#c5b3f0;letter-spacing:-.5px}
#close{width:39px;height:39px;display:grid;place-items:center;border:1px solid #35333f;border-radius:13px;background:#24212d;color:var(--text)}
#close:hover{background:#3a304c}
#close svg,.arrow svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.4}
.lightbox-stage{display:grid;grid-template-columns:42px minmax(0,1fr) 42px;align-items:center;gap:18px}
.lightbox-image-wrap{position:relative;min-width:0}
.lightbox-stage img{display:block;width:100%;height:min(64dvh,800px);object-fit:contain;border-radius:10px}
.lightbox-image-wrap p{position:absolute;inset:45% 10px auto;text-align:center;font-size:12px;color:var(--muted)}
.arrow{display:grid;place-items:center;width:42px;height:44px;border:1px solid #35333f;border-radius:13px;background:transparent;color:#d8d0e8}
.arrow:hover{background:#30283d}
.arrow:disabled{opacity:.3;cursor:default}
.lightbox-bottom{display:flex;justify-content:space-between;align-items:end;margin:20px 60px 0;gap:20px}
.lightbox-bottom h2{font-size:22px;font-weight:550;letter-spacing:-.6px;margin:6px 0}
#lightbox-album{font-size:10px;color:var(--accent)}
#lightbox-location{font-size:11px;color:var(--muted);margin:7px 0 0}
.key-hint{font-size:10px;color:#777389;white-space:nowrap}
.key-hint>span{padding-inline:6px}
@media(min-width:1600px){.intro{padding-block:55px 64px}.grid{column-gap:24px}.card{margin-bottom:26px}}
@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.intro-doodle{margin-right:2%;width:200px}.grid{column-gap:16px}.card-info{padding:13px}.album-tag{display:none}.intro{padding-block:32px 45px}h1{font-size:64px;letter-spacing:-3px}}
@media(max-width:720px){.grid{columns:2}.header-note{display:none}.intro-doodle{width:160px;margin:0}.intro{gap:20px}h1{font-size:56px}.card{border-radius:14px}.hello{font-size:11px}.intro-text{font-size:12px}}
@media(max-width:480px){.wrap{width:calc(100% - 36px)}.header{height:82px}.brand{font-size:19px}.brand-icon{width:34px;height:34px;margin-right:9px}.brand-icon svg{width:21px}.header-link{font-size:10px;gap:7px}.header-link>span{font-size:9px}.intro{padding:30px 0 37px;position:relative;display:block}.intro-copy{position:relative;z-index:1}.hello{font-size:10px;margin-bottom:17px}h1{font-size:53px;letter-spacing:-2.8px;margin-bottom:27px}.intro-text{font-size:11px;line-height:1.85}.intro-doodle{position:absolute;right:2px;top:49px;width:105px;opacity:.5;pointer-events:none}.intro-doodle>span{display:none}.gallery-toolbar{padding:15px 0 18px;gap:9px;align-items:start}.filters{gap:3px;max-width:calc(100% - 49px)}.filter{padding:8px 10px;font-size:9px;gap:5px;min-height:34px;border-radius:10px}.filter span{font-size:8px}.counter{font-size:9px;line-height:34px}.grid{column-gap:11px}.card{margin-bottom:14px;border-radius:12px}.photo-button{aspect-ratio:1}.card:nth-child(3n+2) .photo-button{aspect-ratio:.85}.card:nth-child(5n+1) .photo-button{aspect-ratio:1.1}.card-info{padding:11px 10px 12px}.card-info h3{font-size:10px;line-height:1.4;margin-bottom:4px}.card-info p{font-size:8px}.photo-num{font-size:8px;left:11px;top:11px}.expand{width:27px;height:27px;right:9px;bottom:9px;border-radius:9px;opacity:1;transform:none}.expand svg{width:13px}.demo-notice{font-size:9px;text-align:left;align-items:start;justify-content:start;max-width:290px;margin:12px auto 0}.demo-notice>span{font-size:15px;line-height:1.25}footer{margin-top:35px!important;padding-block:25px 30px}footer>p{font-size:10px}.back-top{font-size:9px;gap:7px}dialog{width:calc(100vw - 14px);max-width:calc(100vw - 14px);padding:12px 8px 23px;border-radius:15px}.lightbox-top{padding:0 7px 5px}.lightbox-brand{font-size:15px}.lightbox-stage{grid-template-columns:29px minmax(0,1fr) 29px;gap:3px}.arrow{width:29px;height:40px;border:0}.arrow svg{width:18px}.lightbox-stage img{height:56dvh;border-radius:6px}.lightbox-bottom{margin:18px 32px 0}.lightbox-bottom h2{font-size:19px}.key-hint{display:none}}
@media(max-width:360px){h1{font-size:47px}.intro-doodle{width:85px;right:0}.filter{padding-inline:8px}.filter span{display:none}}
@media(hover:none){.expand{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}
/* Owner controls share the gallery's quiet, dark appearance. */
.footer-links{display:flex;align-items:center;gap:25px}.admin-link{font-size:10px;color:#9a90ae}.admin-link:hover{color:var(--accent)}.gallery-error{padding:15px;background:#27212c;border:1px solid #53405e;border-radius:12px;font-size:12px;line-height:1.7}
.admin-wrap{width:calc(100% - 56px);max-width:940px;margin-inline:auto}.admin-main{padding-top:30px}.admin-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:27px}.admin-heading h1{font-size:43px;letter-spacing:-1.8px;margin:0}.admin-heading h1>span{color:var(--accent)}.admin-panel{border:1px solid var(--line);border-radius:20px;background:#171920;padding:28px;margin:24px 0}.admin-panel h2{font-size:20px;font-weight:600;letter-spacing:-.6px;margin:0 0 10px}.admin-muted{font-size:12px;color:var(--muted);line-height:1.8;margin:5px 0 18px}.notice{font-size:12px;color:#c3b7db;background:#27212f;border:1px solid #443850;border-radius:12px;padding:15px 18px;line-height:1.8}.error,.field-error{color:#f2b2b8}.error{border-color:#6e3d4b;background:#321e2a}.field-error{font-size:12px;line-height:1.7;overflow-wrap:anywhere;margin:8px 0}.setup-steps{padding-left:20px;font-size:12px;line-height:1.9;color:#aaa8b8}.setup-steps li{padding-left:4px;margin:10px 0}.setup-steps strong{color:var(--text)}.form-stack{display:grid;gap:17px;margin-top:24px}label{display:block;font-size:11px;color:#c5c1d2;line-height:1.7}input{display:block;width:100%;margin-top:7px;padding:12px 13px;font:inherit;font-size:13px;line-height:1.6;color:var(--text);background:#101218;border:1px solid #363440;border-radius:10px;min-width:0}input:focus{outline:2px solid #a28ace66;outline-offset:1px;border-color:#8c72b9}input::placeholder{color:#686675}input:disabled,button:disabled{opacity:.5;cursor:default}label small{display:block;color:#817f92;font-size:10px;line-height:1.7;margin-top:7px}.optional{color:#7c798b}.form-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.primary-button{justify-self:start;background:#c2aff9;border:1px solid #c2aff9;border-radius:11px;padding:12px 20px;color:#22192f;font-size:12px;font-weight:700;min-height:43px}.primary-button:hover:enabled{background:#d1c1ff}.quiet-button{color:#b5a6d0;background:transparent;border:1px solid #3a3348;border-radius:10px;padding:9px 13px;font-size:11px}.quiet-button:hover:enabled{background:#2c233b}.login-panel{max-width:470px}.login-panel .primary-button{margin-top:3px}#setup-check{margin-top:22px}.drop-zone{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:9px;margin:24px 0;padding:30px 20px;border:1px dashed #61516e;border-radius:16px;background:#201b2a;cursor:pointer;transition:background .2s,border-color .2s}.drop-zone:hover,.drop-zone.dragging{background:#2d243e;border-color:var(--accent)}.drop-zone[aria-disabled=true]{opacity:.5;cursor:wait}.drop-zone svg{width:31px;height:31px;fill:none;stroke:var(--accent);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;margin-bottom:4px}.drop-zone strong{font-weight:500;font-size:13px}.drop-zone>span{font-size:10px;color:#8e829f}.drop-zone input{position:absolute;width:1px;height:1px;opacity:0;padding:0;margin:0;bottom:0}.upload-queue{display:grid;gap:12px;margin-bottom:25px}.queue-item{display:grid;grid-template-columns:78px minmax(0,1fr) 30px;gap:14px;align-items:center}.queue-item>img{width:78px;height:78px;object-fit:cover;border-radius:11px}.queue-fields input{font-size:12px;padding:8px 11px;margin-top:4px}.queue-fields .admin-muted,.queue-fields .queue-result{font-size:10px;margin:5px 0 0}.queue-result{color:#b4d0a4}.remove-button{width:28px;height:30px;color:#a59bb1;border:0;background:transparent;font-size:24px}.upload-actions{display:flex;align-items:center;gap:18px;margin-top:23px}.upload-actions .admin-muted{margin:0;font-size:11px}progress{width:100%;height:5px;accent-color:var(--accent);margin-top:20px}.saved-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.saved-heading h2{margin:0}.saved-list{display:grid;gap:0}.saved-item{display:grid;grid-template-columns:65px minmax(0,1fr) auto;align-items:center;gap:15px;padding:15px 0;border-bottom:1px solid var(--line)}.saved-item:last-child{border:0;padding-bottom:0}.saved-item>img{width:65px;height:60px;object-fit:cover;border-radius:10px}.saved-item h3{font-size:12px;font-weight:600;margin:0 0 5px;overflow-wrap:anywhere}.saved-item .admin-muted{font-size:10px;margin:0}.delete-button{color:#d2a5b2;background:#2d1f29;border:1px solid #51303e;border-radius:9px;padding:8px 11px;font-size:10px}.delete-button:hover:enabled{background:#452938}
@media(max-width:600px){.admin-wrap{width:calc(100% - 32px)}.admin-main{padding-top:15px}.admin-heading h1{font-size:31px;letter-spacing:-1px}.admin-heading{gap:10px}.admin-panel{padding:20px 17px;border-radius:15px}.admin-panel h2{font-size:18px}.form-columns{grid-template-columns:1fr;gap:16px}.queue-item{grid-template-columns:58px minmax(0,1fr) 24px;gap:10px}.queue-item>img{width:58px;height:65px}.drop-zone{padding:25px 12px}.drop-zone strong{font-size:12px}.upload-actions{align-items:start;flex-direction:column;gap:12px}.saved-item{grid-template-columns:50px minmax(0,1fr) auto;gap:10px}.saved-item>img{width:50px;height:50px}.footer-links{gap:14px}.admin-link{font-size:9px}.admin-body footer{align-items:start}.admin-body footer>p{max-width:210px}.delete-button{padding:7px 9px}}
.drop-zone:focus-visible,.drop-zone:focus-within{outline:2px solid var(--accent);outline-offset:4px}
textarea{display:block;width:100%;margin-top:7px;padding:11px 13px;min-width:0;resize:vertical;font:inherit;font-size:12px;line-height:1.7;color:var(--text);background:#101218;border:1px solid #363440;border-radius:10px}textarea:focus{outline:2px solid #a28ace66;outline-offset:1px;border-color:#8c72b9}textarea:disabled{opacity:.5}.queue-caption{margin-top:10px}.deployment-panel strong{font-size:13px}.deployment-panel p{margin:5px 0 0;font-size:11px}.deployment-actions{display:flex;gap:15px;align-items:center;margin-top:9px}.deployment-actions a{font-size:11px;text-decoration:underline;text-underline-offset:3px}.deployment-actions:has([hidden]):not(:has(:not([hidden]))){display:none}.photo-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:end}.photo-actions .quiet-button{font-size:10px;padding:8px 10px}.photo-actions .reorder-button{font-size:15px;line-height:1;padding:8px 9px}.saved-item .saved-caption{font-size:10px;line-height:1.6;color:#a99db8;white-space:pre-line;overflow-wrap:anywhere;margin:6px 0 0;max-width:400px}.order-actions{display:flex;gap:12px;margin:14px 0}.order-actions:has([hidden]):not(:has(:not([hidden]))){display:none}.saved-heading h2>span{font-size:12px;color:var(--muted);margin-left:7px}.edit-dialog{width:min(560px,calc(100vw - 30px));padding:28px}.edit-dialog h2{font-size:22px;margin:0}.edit-dialog .form-stack{margin-top:0}.edit-actions{display:flex;gap:12px;align-items:center}#lightbox-caption{max-width:700px;font-size:12px;color:#b5adbe;line-height:1.8;white-space:pre-line;overflow-wrap:anywhere;margin:10px 0 0}#retry-note p{margin:0 0 10px}#login-help a{text-decoration:underline;text-underline-offset:3px}@media(max-width:600px){.saved-item{grid-template-columns:50px minmax(0,1fr)}.photo-actions{grid-column:2;justify-content:start;margin-top:3px}.deployment-actions{align-items:start;flex-wrap:wrap}.order-actions{flex-wrap:wrap}.edit-dialog{padding:22px 17px}.edit-actions{flex-wrap:wrap}}
