:root{--ink:#122b4c;--muted:#62758d;--line:#e1e9f0;--sky:#e9f5fc;--blue:#1675b9;--blue-d:#09558b;--surface:#fff;--background:#f6f9fb;--radius:18px;--shadow:0 11px 36px rgba(21,59,97,.045)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--background);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);font-size:15px;line-height:1.55}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}.container{width:min(1120px,calc(100% - 40px));margin-inline:auto}.top{background:#fff;border-bottom:1px solid var(--line)}.top-inner{display:flex;align-items:center;justify-content:space-between;min-height:78px;gap:20px}.brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);font-size:19px;font-weight:800;letter-spacing:-.05em}.brand:hover{text-decoration:none}.brand strong{font-weight:500}.brand-mark{display:grid;place-items:center;width:40px;height:40px;color:#fff;font-weight:800;border-radius:11px;background:linear-gradient(140deg,#1197c6,#175eac);font-size:26px;letter-spacing:-.1em}.top nav{display:flex;align-items:center;gap:23px;font-size:13px;font-weight:650}.nav-muted{color:var(--muted);font-weight:400}.main{padding:46px 0 76px;min-height:calc(100vh - 155px)}.intro{max-width:760px;margin-bottom:30px}.eyebrow{text-transform:uppercase;color:var(--blue);font-size:12px;letter-spacing:.17em;font-weight:800;margin:0 0 10px}.intro h1{font-size:clamp(32px,4.6vw,48px);font-weight:770;line-height:1.14;letter-spacing:-.05em;margin:0 0 12px}.lede{color:var(--muted);font-size:17px;max-width:700px;margin:0}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:29px;box-shadow:var(--shadow)}.panel h2,.content-section h2{font-size:21px;line-height:1.3;letter-spacing:-.03em;margin:0 0 18px}.panel h3{margin:0 0 16px;font-size:16px}.panel p{color:var(--muted)}.narrow{max-width:510px}.center{text-align:center;margin:10vh auto;max-width:590px}.spaced{margin-top:22px}.stack{display:grid;gap:16px}.field{display:grid;gap:7px;font-size:13px;font-weight:700;color:#39516c}.field input,.field select{appearance:none;width:100%;height:45px;border:1px solid #cbd8e4;background:#fff;border-radius:10px;padding:10px 12px;color:var(--ink);outline:none;font-weight:500}.field input:focus,.field select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(22,117,185,.14)}.btn{border:1px solid var(--blue);background:var(--blue);color:#fff;font-size:13px;font-weight:750;white-space:nowrap;border-radius:10px;min-height:43px;padding:10px 18px;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .15s,transform .15s}.btn:hover{background:var(--blue-d);text-decoration:none;color:#fff}.btn:focus-visible,.text-action:focus-visible{outline:3px solid #92d8ff;outline-offset:2px}.btn-small{padding:9px 13px;min-height:37px}.btn-outline{background:#fff;color:var(--blue);border-color:#c4dce9}.btn-outline:hover{color:#fff;background:var(--blue)}.hint{font-size:12px;color:#78889a!important;margin:0}.hint code{background:#eef2f5;border-radius:4px;padding:2px 4px}.muted{color:var(--muted)!important}.notice{padding:18px 20px;border-radius:13px;margin-bottom:22px;border:1px solid #f2cfcb;background:#fff4f2;color:#9c413a}.notice-ok{background:#eaf8f2;border-color:#c4e8d8;color:#1d7653}.secret-display{border:1px dashed #86cbb0;margin-top:13px;padding:12px;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fff}.secret-display small{display:block;color:var(--muted);margin-bottom:2px}.secret-display code{font-size:16px;overflow-wrap:anywhere;color:var(--ink)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:34px;color:var(--muted);font-size:13px}.toolbar a{font-weight:700}.inline-form{display:inline}.text-action{border:0;padding:3px;background:transparent;color:var(--blue);font-size:13px;font-weight:750;white-space:nowrap}.text-action:hover{text-decoration:underline}.danger{color:#c25051}.admin-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(310px,.9fr);gap:22px;align-items:start}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.section-head h2{margin:0}.count{background:#eef4f8;color:#62758d;border-radius:99px;padding:5px 11px;font-size:12px;font-weight:650;white-space:nowrap}.event-list-item{display:flex;align-items:center;padding:16px 0;gap:14px;border-top:1px solid var(--line);color:var(--ink)}.event-list-item:hover{text-decoration:none}.event-list-item:hover strong{color:var(--blue)}.event-list-item>div{flex:1;min-width:0}.event-list-item strong,.event-list-item small{display:block}.event-list-item strong{font-size:15px;overflow-wrap:anywhere}.event-list-item small{margin-top:3px;color:var(--muted);font-size:12px}.arrow{font-size:21px;color:var(--muted)}.status{background:#f0f2f6;color:#69798a;border-radius:99px;padding:5px 10px;font-size:12px;font-weight:700;white-space:nowrap}.status-live{background:#e3f5ed;color:#167653}.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px}.team-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);gap:12px}.team-row small{color:var(--muted)}.team-row strong{font-size:14px}.account-details{border-top:1px solid var(--line);padding-top:16px;margin-top:30px;max-width:400px}.account-details summary{color:var(--blue);cursor:pointer;font-weight:700}.account-details form{margin-top:20px}.copy-line{display:flex;align-items:center;gap:15px;border:1px solid var(--line);background:#f8fafc;border-radius:12px;padding:12px}.copy-line code{flex:1;min-width:0;overflow-wrap:anywhere;font-size:13px;color:#35526a}.toggle{display:flex;align-items:center;gap:10px;font-weight:650;font-size:13px}.toggle input{width:17px;height:17px;accent-color:var(--blue)}.upload-field{background:#f4f9fc;border:1.5px dashed #a7c5dc;border-radius:12px;padding:27px 16px;display:grid;text-align:center;gap:2px;justify-items:center;color:var(--ink);cursor:pointer}.upload-field small{color:var(--muted)}.upload-field input{width:100%;font-size:12px;padding:8px 0}.upload-symbol{font-size:27px;color:var(--blue);font-weight:300}.admin-file-row{display:flex;align-items:center;gap:14px;padding:11px 0;border-top:1px solid var(--line)}.file-icon{width:43px;height:44px;border-radius:11px;background:#eef6fc;display:grid;place-items:center;font-size:22px;color:var(--blue);flex-shrink:0}.file-details{flex:1;min-width:0}.file-details strong{font-size:14px;font-weight:700;overflow-wrap:anywhere;display:block;line-height:1.35}.file-details small{font-size:12px;color:var(--muted);display:block;margin-top:3px}.subtle-panel{background:#eaf3fa;border-radius:13px;padding:20px;color:#335779;font-size:13px}.public-toolbar{display:flex;flex-wrap:wrap;gap:17px;align-items:center;margin-bottom:30px;color:var(--muted);font-size:12px}.download-banner{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(105deg,#e1f2ff,#f1f9ff);border:1px solid #c9e5f8;border-radius:17px;padding:21px 25px;margin:0 0 38px}.download-banner strong,.download-banner span{display:block}.download-banner strong{font-size:17px;letter-spacing:-.02em}.download-banner span{font-size:13px;color:#547391;margin-top:4px}.content-section{margin-top:42px}.content-section .section-head{margin-bottom:21px}.content-section .section-head h2{font-size:27px;margin:0}.content-section .eyebrow{margin-bottom:5px}.empty{border:1px dashed #cddbe5;border-radius:14px;text-align:center;padding:40px;color:var(--muted);background:#fff}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.photo-card{min-width:0;border-radius:13px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.photo-card>a{display:block;aspect-ratio:4/3;background:#deebf1;overflow:hidden}.photo-card img{width:100%;height:100%;object-fit:cover;transition:transform .25s}.photo-card>a:hover img{transform:scale(1.05)}.photo-caption{padding:11px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px}.photo-caption span{color:#465c74;font-size:12px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.photo-caption a{font-size:20px;line-height:1;flex-shrink:0;padding:0 4px}.document-list{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden}.document{display:flex;align-items:center;gap:16px;padding:16px 21px;border-top:1px solid var(--line)}.document:first-child{border-top:0}.doc-mark{background:#e7f2f9;color:var(--blue-d);border-radius:8px;font-size:10px;letter-spacing:.02em;font-weight:800;min-width:54px;height:50px;display:grid;place-items:center}.closing{text-align:center;font-size:13px;color:var(--muted);margin-top:60px}.access-panel{margin:32px auto 0;padding:35px}.lock-emblem{background:#eaf5fc;width:51px;height:51px;border-radius:13px;color:var(--blue);display:grid;place-items:center;font-size:37px;line-height:1;margin-bottom:22px}.access-panel p{margin:0 0 24px}.lightbox{position:fixed;inset:0;background:rgba(5,19,33,.95);z-index:100;display:grid;place-items:center;padding:55px 24px 70px}.lightbox[hidden]{display:none}.lightbox img{max-height:calc(100vh - 125px);max-width:100%;width:auto;object-fit:contain;box-shadow:0 20px 80px rgba(0,0,0,.4)}.lightbox-close{position:absolute;right:25px;top:12px;color:#fff;background:transparent;border:0;font-size:40px}.lightbox-label{position:absolute;bottom:20px;color:#fff;font-size:13px}.footer{background:#fff;border-top:1px solid var(--line)}.footer-inner{min-height:75px;display:flex;justify-content:space-between;align-items:center;gap:20px;color:#8a9aad;font-size:12px}
@media(max-width:850px){.admin-layout,.team-grid{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.nav-muted{display:none}}@media(max-width:590px){.container{width:min(100% - 28px,1120px)}.top-inner{min-height:70px}.top nav{font-size:12px}.brand{font-size:17px}.brand-mark{width:34px;height:34px;font-size:22px}.main{padding:34px 0 60px}.intro h1{font-size:34px}.lede{font-size:15px}.panel{padding:20px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.download-banner,.document{align-items:flex-start}.download-banner{flex-direction:column}.document{flex-wrap:wrap}.document .btn{margin-left:69px}.file-details strong{font-size:13px}.copy-line{flex-direction:column;align-items:stretch}.admin-file-row{flex-wrap:wrap}.footer-inner{flex-direction:column;justify-content:center;text-align:center;padding:17px 0;gap:4px}}

/* Shared hosting: avoid loading originals when no GD preview exists. */
.photo-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;font-size:54px;color:#6185a0;background:linear-gradient(140deg,#e1edf5,#f7fafc);gap:3px}
.photo-placeholder small{font-size:12px;color:#536e87;font-weight:650}
.gallery-pagination{margin-top:22px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.gallery-pagination>span{color:var(--muted);font-size:13px;margin-right:auto}
.compact-form{margin-top:20px;max-width:450px}
.compact-form .field input[type=file]{height:auto;min-height:48px;padding:12px}
@media(prefers-reduced-motion:reduce){.photo-card img{transition:none}}

/* v1.3: official logo slot, photo credits and FTP ingestion */
.brand-logo{display:block;max-width:190px;width:auto;height:auto;max-height:58px;object-fit:contain}
.brand-fallback{font-size:26px;font-weight:900;letter-spacing:-.06em;color:var(--ink)}
.photo-credit{font-size:13px;color:var(--muted);margin:-12px 0 22px}
.ftp-paths{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}
.ftp-paths>div{padding:14px;border-radius:10px;border:1px solid var(--line);background:#f8fafc;min-width:0}
.ftp-paths strong{display:block;font-size:13px;margin-bottom:7px}
.ftp-paths code{font-size:12px;overflow-wrap:anywhere;word-break:break-word;color:#335779}
.import-warning{color:#b44434!important;font-weight:650}
button:disabled{opacity:.55;cursor:wait}
@media(max-width:690px){.ftp-paths{grid-template-columns:1fr}.brand-logo{max-width:142px;max-height:49px}}
