/* Sendyour portal. Bootstrap handles component behavior and layout utilities. */
:root{--ink:#1e3045;--muted:#738198;--accent:#4263e8;--line:#e5eaf3;--soft:#f3f5ff;--bs-primary:#4263e8;--bs-primary-rgb:66,99,232}
body.portal-page{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);font-size:14px;background:#f7f8fc;line-height:1.6}
.container{max-width:1160px;padding-left:28px;padding-right:28px}.topbar{padding:4px 0 26px;border-bottom:1px solid var(--line);margin-bottom:48px}.brand{display:flex;align-items:center;gap:0;font-weight:750;letter-spacing:-.7px;font-size:22px;color:var(--ink);text-decoration:none}.brand>span:not(.brand-mark){color:var(--accent)}.brand .brand-mark{display:grid;place-items:center;width:36px;height:36px;margin-right:10px;border-radius:12px;background:var(--accent);color:#fff;font-size:25px;letter-spacing:-2px;box-shadow:0 5px 12px #4263e824}.account{color:var(--muted)}.account>span{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account .btn{background:#fff;border-color:var(--line)!important;color:#546479;font-size:12px;padding:8px 12px}
.btn{font-size:13px;font-weight:600;border-radius:9px;padding:10px 16px;line-height:1.5;transition:background .16s,box-shadow .16s,transform .16s}.btn:active{transform:translateY(1px)}.btn-primary{--bs-btn-bg:var(--accent);--bs-btn-border-color:var(--accent);--bs-btn-hover-bg:#3554d4;--bs-btn-hover-border-color:#3554d4;--bs-btn-active-bg:#304dc7;--bs-btn-active-border-color:#304dc7;box-shadow:0 4px 10px #4263e81a}.btn-outline-primary{--bs-btn-color:#4b63ba;--bs-btn-border-color:#dce3fa;--bs-btn-hover-bg:#f2f5ff;--bs-btn-hover-color:#3554d4;--bs-btn-hover-border-color:#b8c5f4;--bs-btn-active-bg:#e9eeff;--bs-btn-active-color:#3554d4}.btn-secondary{--bs-btn-bg:#eef1f6;--bs-btn-border-color:#eef1f6;--bs-btn-color:#536176;--bs-btn-hover-bg:#e3e8f0;--bs-btn-hover-border-color:#e3e8f0;--bs-btn-hover-color:#253b55}.btn:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #aabaff;outline-offset:3px}
.heading{margin-bottom:38px!important}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:var(--accent);margin-bottom:10px}.heading h1{font-size:36px;letter-spacing:-1.2px;font-weight:750;margin:0 0 10px}.heading p:not(.eyebrow){font-size:14px;color:var(--muted);margin:0}.heading>.btn{padding:13px 20px;font-size:13px}.gallery-list-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.gallery-list-heading h2{font-size:15px;letter-spacing:-.2px;font-weight:700;margin:0 0 4px}.gallery-list-heading p{font-size:12px;color:var(--muted);margin:0}.list-count{display:inline-block;margin-left:6px;min-width:24px;padding:2px 7px;border-radius:6px;background:#e9edf9;color:#5a6ca0;font-size:11px;text-align:center}.retention{font-size:11px;color:var(--muted);white-space:nowrap}.retention>span{font-size:16px;margin-right:5px}
.gallery-row{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;margin-bottom:14px!important;box-shadow:0 2px 4px #20324a02;transition:border-color .2s,box-shadow .2s}.gallery-row:hover{border-color:#cdd7ed;box-shadow:0 4px 16px #263e6810}.gallery-row[open]{border-color:#bdcafa;box-shadow:0 5px 24px #344f8810}.gallery-row>summary{list-style:none;display:flex;align-items:center;gap:16px;padding:20px 22px;cursor:pointer;min-height:90px;transition:background .15s}.gallery-row>summary::-webkit-details-marker{display:none}.gallery-row>summary:hover{background:#fafbff}.gallery-row[open]>summary{background:#f5f7ff;border-bottom:1px solid #e4e9fc}.gallery-row>summary:after{content:'';width:8px;height:8px;flex:0 0 8px;border-right:1.5px solid #7a8ba8;border-bottom:1.5px solid #7a8ba8;transform:rotate(45deg);margin:0 4px 4px 6px;transition:transform .15s}.gallery-row[open]>summary:after{transform:rotate(225deg);margin-top:7px}.summary-main{flex:1;min-width:0}.title-line{display:flex;align-items:center;gap:10px}.title{font-size:15px;font-weight:700;letter-spacing:-.15px;overflow-wrap:anywhere}.edit-title.btn{font-size:18px;line-height:1;padding:4px;color:#97a5bc;text-decoration:none;border:0;box-shadow:none}.edit-title.btn:hover{color:var(--accent);background:#e7ecff}.meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin-top:7px;color:#8793a7;font-size:11px}.count.badge{font-size:11px;font-weight:500;padding:4px 7px;background:#eef1f8!important;color:#6d7d98!important;border-radius:5px}.download-status.badge{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:550;line-height:1.3;padding:7px 10px;color:#8290a5!important;background:#f0f3f8!important;white-space:nowrap}.download-status:before{content:'';width:5px;height:5px;border-radius:50%;background:#a5b0c1}.download-status.text-bg-success{background:#eaf7f0!important;color:#2d8964!important}.download-status.text-bg-success:before{background:#46ae81}
.gallery-row .card-body{padding:22px}.gallery-toolbar{align-items:center;margin-bottom:20px!important}.gallery-info{font-size:11px;color:#8794aa;min-width:0;line-height:1.6}.gallery-info p{margin:0 0 3px;overflow-wrap:anywhere}.gallery-info p:last-child{color:#6c7d99}.gallery-actions{align-items:center;flex-shrink:0}.gallery-actions .btn{font-size:11px;padding:9px 12px;min-height:36px;white-space:nowrap}.gallery-note{font-size:13px;color:var(--muted);padding:10px 14px;background:#fafbfe;border-radius:8px;white-space:pre-wrap}
.dropzone{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;width:100%;padding:26px 14px;border:1px dashed #bbc9f1;border-radius:11px;background:#f8faff;text-align:center;color:var(--accent);cursor:pointer;transition:background .15s,border-color .15s}.dropzone:hover{background:#f0f4ff;border-color:#819bea}.dropzone>strong{font-size:13px;font-weight:650}.dropzone>span{font-size:11px;color:#8a99b0;font-weight:400}.dropzone input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.dropzone:focus-within,.dropzone.dragging{outline:2px solid #8fa7ff;outline-offset:2px;background:#edf2ff}.compact-upload .dropzone{display:grid;grid-template-columns:30px 1fr;text-align:left;gap:3px 12px;padding:15px 18px;min-height:72px}.compact-upload .dropzone svg{grid-row:1/3;width:23px;height:23px}.camera-picker{display:none!important}.selection,.upload-status{font-size:12px;color:var(--muted);margin:10px 0}.upload-status:empty{display:none}.upload progress{width:100%;height:5px;accent-color:var(--accent);margin:10px 0}.compact-upload:has(button[type=submit]:disabled) .selection,.compact-upload button[type=submit]:disabled{display:none}
.preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 20px}.photo-card{position:relative;min-width:0;aspect-ratio:16/10;border-radius:11px;overflow:hidden;background:#edf1f8}.photo-card a{display:block;height:100%}.photo-card img,.photo-card video{display:block;width:100%;height:100%;object-fit:cover}.photo-card img{transition:transform .25s}.photo-card a:hover img{transform:scale(1.035)}.photo-label{position:absolute;top:10px;left:10px;padding:4px 8px;background:#15233399;backdrop-filter:blur(8px);border-radius:6px;color:#fff;font-size:10px;line-height:1.4;font-weight:500;pointer-events:none}.more-photos{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:135px;padding:22px;background:#f3f5ff;border:1px solid #e3e9fd;border-radius:11px;text-align:center;text-decoration:none;color:#6278c2;transition:background .15s,border-color .15s}.more-photos:hover{background:#eaf0ff;border-color:#b5c5f7;color:var(--accent)}.more-photos strong{font-size:30px;line-height:1.2;font-weight:700;letter-spacing:-1px}.more-photos span{font-size:12px;font-weight:500}.gallery-footer{border-color:#edf0f6!important;padding-top:14px!important}.gallery-footer .btn{font-size:11px;padding:7px 10px;color:#bb7280;border-color:#edd8de;background:#fff;box-shadow:none}.gallery-footer .btn:hover{background:#fff2f3;color:#b33049;border-color:#dcacb7}
.modal-backdrop.show{opacity:.36}.modal-content{border:1px solid #e4e9f4;box-shadow:0 24px 80px #1a2c5233;border-radius:20px!important}.modal .modal-body{padding:30px!important}.modal-symbol{width:40px;height:40px;display:grid;place-items:center;background:#eef2ff;color:var(--accent);border-radius:12px;font-size:26px;margin-bottom:18px}.modal h2{font-size:22px!important;letter-spacing:-.6px;margin-bottom:8px}.modal-description{font-size:13px;color:var(--muted);margin-bottom:24px}.form-label{font-size:12px;font-weight:600;color:#52627b}.form-control{font-size:13px;padding:11px 12px;border-color:#e0e6f0;border-radius:9px;color:var(--ink)}.form-control::placeholder{color:#a2adbf}.form-control:focus{border-color:#9eb0f6;box-shadow:0 0 0 3px #4263e812}.modal-actions{border-color:var(--line)!important}.modal .selection{font-size:11px}.swal2-popup{border-radius:18px;font-family:inherit}.swal2-title{font-size:24px;letter-spacing:-.5px;color:var(--ink)}.swal2-input{font-size:15px;border-radius:9px}.login{max-width:420px;margin:8vh auto;border-color:var(--line);border-radius:18px;padding:32px!important;box-shadow:0 12px 50px #263e6809!important}.login h1{font-size:29px;letter-spacing:-1px;font-weight:700}.login>p:not(.eyebrow){color:var(--muted);font-size:13px}.login .eyebrow{font-size:9px}.login .btn{padding:12px}#message{position:sticky;top:12px;z-index:1040;border-radius:11px;font-size:13px;overflow-wrap:anywhere}footer{font-size:11px!important;color:#a0adbf!important;margin-top:14px}[hidden]{display:none!important}
@media(pointer:coarse){.camera-picker{display:block!important}.btn{min-height:44px}.edit-title.btn{min-height:32px}.gallery-footer .btn{min-height:40px}}
@media(max-width:575.98px){.container{padding-left:16px;padding-right:16px}.topbar{margin-bottom:30px;padding-bottom:20px}.brand{font-size:19px}.brand .brand-mark{width:30px;height:30px;font-size:22px;border-radius:10px;margin-right:7px}.account>span{max-width:90px;font-size:11px}.account .btn{font-size:10px;padding:7px 9px;min-height:34px}.heading{gap:20px!important;margin-bottom:30px!important}.heading h1{font-size:30px}.heading p:not(.eyebrow){font-size:13px}.heading>.btn{width:100%}.gallery-list-heading{align-items:flex-start;flex-direction:column;gap:8px}.gallery-list-heading p{font-size:11px}.retention{font-size:10px}.gallery-row>summary{padding:16px 13px;gap:7px;min-height:88px}.title{font-size:14px}.title-line{gap:5px}.meta{font-size:10px;gap:6px}.count.badge{font-size:10px}.download-status.badge{font-size:9px;padding:6px 7px}.download-status:before{display:none}.gallery-row>summary:after{width:7px;height:7px;flex-basis:7px;margin-left:5px}.gallery-row .card-body{padding:16px 13px}.gallery-actions{width:100%}.gallery-actions .btn{flex:1;font-size:11px;white-space:normal}.preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.more-photos{min-height:110px;padding:15px 8px}.more-photos strong{font-size:26px}.more-photos span{font-size:11px}.photo-label{top:7px;left:7px;font-size:9px}.compact-upload .dropzone{padding:14px 12px;gap:3px 8px}.modal .modal-body{padding:24px 20px!important}.modal-dialog{margin:12px}.modal h2{font-size:21px!important}.login{margin:4vh auto;padding:26px!important}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
.new-gallery-menu{flex-shrink:0}.new-gallery-menu>.btn{padding:13px 20px}.new-gallery-menu .dropdown-menu{min-width:310px;border:1px solid var(--line);border-radius:13px;padding:8px;box-shadow:0 12px 40px #1e304518}.new-gallery-menu .dropdown-item{display:flex;align-items:center;gap:12px;white-space:normal;border-radius:8px;padding:12px;font-size:13px;color:var(--ink)}.new-gallery-menu .dropdown-item:hover{background:var(--soft);color:var(--accent)}.new-gallery-menu small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.6}.menu-icon{display:grid;place-items:center;width:30px;height:30px;flex-shrink:0;border-radius:8px;color:var(--accent);background:#eef2ff;font-size:21px}.capture-share{font-size:13px;color:var(--muted)}.capture-expiry{font-size:11px}.capture-share-actions{display:flex;justify-content:center;gap:8px;margin-top:18px;flex-wrap:wrap}.capture-share .form-control{font-size:12px}@media(max-width:575.98px){.new-gallery-menu,.new-gallery-menu>.btn{width:100%}.new-gallery-menu .dropdown-menu{min-width:0;width:100%}}
.copy-status{font-size:12px;color:#2d8964;margin:12px 0 0}

/* Compact SweetAlert notifications, shared by portal actions. */
.swal2-popup.swal2-toast.portal-toast{padding:16px 18px;border:1px solid #e8ecf3;border-radius:12px;box-shadow:0 5px 24px #1e304522;background:#fff;align-items:center}
.portal-toast.swal2-toast .swal2-title{font-size:14px;font-weight:600;letter-spacing:0;line-height:1.4;margin:0 10px;color:#526071;text-align:left}
.portal-toast .swal2-timer-progress-bar{background:#cdd9f6}
.portal-toast .swal2-close{font-size:20px;color:#98a4b4;align-self:start}
@media(max-width:575.98px){.swal2-container.swal2-top{padding:12px;width:100%!important}.swal2-popup.swal2-toast.portal-toast{width:100%!important;padding:14px}.portal-toast.swal2-toast .swal2-title{font-size:13px}}
.auth-description{font-size:13px;color:var(--muted)}.auth-switch{text-align:center;font-size:12px;color:var(--muted);margin:22px 0 0}.auth-switch button{border:0;padding:4px;background:none;color:var(--accent);font:inherit;font-weight:600}.auth-switch button:hover{text-decoration:underline}.auth-hint{display:block;margin-top:5px;font-size:10px;color:var(--muted);font-weight:400}

.auth-help{text-align:right;margin:12px 0 0}.auth-help button{border:0;background:none;padding:4px 0;color:var(--muted);font-size:11px}.auth-help button:hover{color:var(--accent);text-decoration:underline}.password-help{font-size:14px;color:var(--muted)}.password-help a{color:var(--accent);font-weight:600}
