:root{--bg:#f3f5f7;--panel:#fff;--text:#17212b;--muted:#637282;--line:#dce2e7;--primary:#176b5b;--primary-dark:#105246;--danger:#b42318;--warning:#b54708;--radius:14px;--shadow:0 10px 34px rgba(25,43,57,.07)}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}body{margin:0;line-height:1.5}a{color:inherit}.container{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:40px 0 70px}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100% - 1180px)/2));gap:34px;position:sticky;top:0;z-index:10}.brand{text-decoration:none;font-weight:800;display:flex;align-items:center;gap:10px}.brand span{display:grid;place-items:center;min-width:34px;width:auto;height:34px;padding:0 8px;background:var(--primary);color:#fff;border-radius:10px}.topbar nav{display:flex;gap:24px;flex:1}.topbar nav a{text-decoration:none;color:var(--muted);font-weight:600}.topbar nav a:hover{color:var(--primary)}.topbar form button{border:0;background:none;color:var(--muted);cursor:pointer;font:inherit}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.page-head h1,.install-head h1{font-size:clamp(30px,5vw,46px);line-height:1.05;margin:8px 0}.page-head p,.install-head p{margin:0;color:var(--muted);max-width:720px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:800;color:var(--primary)}.panel,.login-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:22px}.panel h2{margin:0 0 14px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #b9c3ca;border-radius:9px;background:#fff;color:var(--text);padding:10px 16px;text-decoration:none;font:inherit;font-weight:700;cursor:pointer}.button:hover{border-color:#83919b}.button.primary{background:var(--primary);border-color:var(--primary);color:#fff}.button.primary:hover{background:var(--primary-dark)}.button.full{width:100%}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px}.stat strong{display:block;font-size:27px}.stat span{color:var(--muted)}label{display:block;font-weight:700;margin:14px 0}input,textarea,select{display:block;width:100%;margin-top:6px;border:1px solid #b7c1c9;border-radius:9px;padding:11px 12px;background:#fff;color:var(--text);font:inherit}input:focus,textarea:focus,select:focus{outline:3px solid rgba(23,107,91,.17);border-color:var(--primary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.form-grid .wide{grid-column:1/-1}.install-head{padding:10px 0 18px}.check-table{width:100%;border-collapse:collapse}.check-table td{padding:12px;border-top:1px solid var(--line);vertical-align:top}.check-table tr:first-child td{border-top:0}.check-table td:first-child{width:44px}.check-table td:last-child{text-align:right}.check-table small{display:block;color:var(--muted);font-weight:400}.status{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;font-weight:900}.status-ok{background:#d9f5ea;color:#087451}.status-error{background:#fee4e2;color:var(--danger)}.status-warning{background:#fff1d6;color:var(--warning)}.status-info{background:#e5edf4;color:#526777}.alert{padding:13px 16px;border-radius:10px;margin:0 0 20px}.alert-error{background:#fee4e2;color:#8f1d15}.alert-success{background:#d9f5ea;color:#086044}.login-card{max-width:460px;margin:8vh auto}.login-card h1{margin-bottom:6px}.login-card>p{color:var(--muted);margin-top:0}.columns{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}.sticky{position:sticky;top:92px}.album-list{display:grid;gap:13px}.album-card{display:flex;justify-content:space-between;align-items:center;text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.album-card:hover{border-color:#9aaca7}.album-card h3{margin:9px 0 3px}.album-card p{margin:0;color:var(--muted)}.arrow{font-size:25px;color:var(--primary)}.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:800}.badge-active{background:#d9f5ea;color:#087451}.badge-draft{background:#e8edf1;color:#526777}.badge-archived{background:#fff1d6;color:#8a4b09}.back{font-weight:700;color:var(--primary);text-decoration:none}.status-form{display:flex;gap:8px;align-items:center}.status-form select{margin:0}.upload-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.upload-panel h2{margin-bottom:4px}.upload-panel p{color:var(--muted);margin:0;max-width:700px}.file-button{margin:0;display:inline-flex;background:var(--primary);color:#fff;border-radius:9px;padding:11px 17px;cursor:pointer}.file-button input{display:none}.upload-summary,.upload-list{width:100%}.upload-summary{padding:12px;background:#eef6f4;border-radius:9px}.upload-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(160px,2fr) minmax(90px,auto);gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.upload-row small,.photo-card small{display:block;color:var(--muted)}.upload-row em{font-style:normal;text-align:right;color:var(--muted);font-size:13px}.progress{height:9px;background:#e4e9ed;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;width:0;background:var(--primary);transition:width .15s}.upload-row.complete em{color:#087451}.upload-row.failed em{color:var(--danger);overflow-wrap:anywhere}.section-head{display:flex;align-items:center;justify-content:space-between}.section-head h2 span{color:var(--muted);font-weight:500}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.photo-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#e5eaee}.photo-card>div{padding:12px}.photo-card strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty{border:2px dashed #cbd3d9;border-radius:var(--radius);padding:34px;text-align:center;color:var(--muted)}.empty strong{color:var(--text)}.table-scroll{overflow-x:auto}.muted{color:var(--muted)}code{background:#edf1f4;border-radius:5px;padding:2px 6px}@media(max-width:900px){.stats{grid-template-columns:1fr 1fr}.columns{grid-template-columns:1fr}.sticky{position:static}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:640px){.container{width:min(100% - 22px,1180px);padding-top:25px}.topbar{padding:0 12px;gap:12px}.topbar nav{gap:12px}.topbar nav a:first-child{display:none}.brand{font-size:0}.brand span{font-size:14px}.page-head{display:block}.page-head>.button{margin-top:16px}.stats{grid-template-columns:1fr 1fr;gap:9px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.upload-row{grid-template-columns:1fr}.upload-row em{text-align:left}.status-form{margin-top:16px}.check-table td:last-child{text-align:left}}
.participant-body{background:#edf2f1}.participant-container{width:min(1380px,calc(100% - 32px))}.participant-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.participant-head h1{font-size:clamp(30px,5vw,48px);line-height:1.08;margin:7px 0}.participant-head p{margin:0;color:var(--muted);max-width:760px}.gallery-actions{position:sticky;top:12px;z-index:8;display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:13px 16px;margin-bottom:20px}.gallery-actions label{display:flex;align-items:center;gap:8px;margin:0}.gallery-actions input,.photo-select input{width:auto;margin:0}.gallery-actions [data-selection-count]{color:var(--muted);flex:1}.participant-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.participant-photo{background:#fff;border:2px solid transparent;border-radius:12px;overflow:hidden;box-shadow:0 5px 20px rgba(25,43,57,.06);transition:border-color .15s,transform .15s}.participant-photo.selected{border-color:var(--primary)}.participant-photo:hover{transform:translateY(-2px)}.participant-preview img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#e3e9e7}.participant-photo-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px 4px}.photo-select{display:flex;align-items:center;gap:6px;margin:0;font-size:13px}.photo-download{font-size:13px;color:var(--primary);font-weight:700;text-decoration:none}.participant-photo>small{display:block;color:var(--muted);padding:3px 11px 11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-dialog{width:min(1100px,calc(100% - 28px));max-height:calc(100vh - 28px);border:0;border-radius:14px;background:#111;padding:0;box-shadow:0 25px 80px rgba(0,0,0,.5)}.gallery-dialog::backdrop{background:rgba(0,0,0,.82)}.gallery-dialog img{display:block;max-width:100%;max-height:calc(100vh - 90px);margin:auto}.gallery-dialog p{color:#fff;margin:10px 56px 14px;text-align:center}.gallery-dialog button{position:absolute;right:12px;top:10px;border:0;border-radius:50%;width:40px;height:40px;background:rgba(255,255,255,.88);font-size:28px;line-height:1;cursor:pointer}.button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:1100px){.participant-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){.participant-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.participant-head{display:block}.participant-head form{margin-top:15px}}
@media(max-width:560px){.participant-container{width:min(100% - 18px,1380px);padding-top:22px}.participant-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.participant-photo-meta{display:block}.photo-download{display:block;margin-top:7px}.gallery-actions{top:6px;gap:10px}.gallery-actions [data-selection-count]{flex-basis:50%}.gallery-actions .button{width:100%}}
.participant-photo{display:flex;flex-direction:column;height:100%}.participant-preview{display:block;aspect-ratio:4/3;overflow:hidden;background:#e3e9e7}.participant-preview img{height:100%;aspect-ratio:auto}.participant-photo-meta{margin-top:auto;min-height:49px;padding:10px 11px}.quota-form{display:flex;align-items:flex-end;gap:16px;max-width:650px}.quota-form label{flex:1}.quota-form label small{display:block;color:var(--muted);font-weight:400;margin-top:5px}.quota-form .button{margin-bottom:14px;white-space:nowrap}
@media(max-width:560px){.quota-form{display:block}.quota-form .button{width:100%;margin-bottom:0}}
.stats.stats-3{grid-template-columns:repeat(3,1fr)}.album-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.button.small{padding:7px 10px;font-size:13px}.button.danger{border-color:#f1b4ae;color:var(--danger);background:#fff}.button.danger:hover{border-color:var(--danger);background:#fff4f2}.photo-card-meta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.photo-card-meta>div{min-width:0}.photo-card-meta form{margin:0}.inline-form{display:inline-block;margin:0 8px 8px 0}.password-reset{margin-top:7px}.password-reset summary{color:var(--primary);font-weight:700;cursor:pointer;font-size:13px}.password-reset label{font-size:13px;margin:8px 0}.user-table th{text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}.user-table td{vertical-align:top}.user-table td:first-child{width:auto;min-width:190px}.user-table td:last-child{text-align:left;min-width:250px}.user-table td:first-child small{display:block;color:var(--muted)}.user-create-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.user-create-grid label{margin-top:0}
@media(max-width:900px){.stats.stats-3{grid-template-columns:repeat(3,1fr)}.album-actions{justify-content:flex-start}.page-head .album-actions{margin-top:16px}.user-create-grid{grid-template-columns:1fr}}
@media(max-width:640px){.stats.stats-3{grid-template-columns:1fr 1fr}.topbar{height:auto;min-height:70px;padding-top:9px;padding-bottom:9px}.topbar nav{overflow-x:auto}.topbar nav a{white-space:nowrap}.photo-card-meta{grid-template-columns:1fr}.photo-card-meta .button{width:100%}}
.alert-warning{background:#fff1d6;color:#7a4308}.login-help{text-align:center;margin:16px 0 0!important}.login-help a{color:var(--primary);font-weight:700}.login-card form+form{margin-top:10px}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
