/* Square portraits and moderated family photo form. */
.hb-family{background:#fff4df;position:relative;overflow:hidden}
.family-head{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:28px}
.family-head>div{max-width:700px;min-width:0}.family-head .lead{margin:14px 0 0;font-size:17px}.family-head>.btn{flex-shrink:0}
.family-paw{display:block;width:1em;height:1em}
.family-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:start}
.family-card,.family-empty{min-width:0;margin:0;border-radius:23px;overflow:hidden;border:2px solid var(--ink,#241b14);background:#fff;box-shadow:4px 4px 0 var(--ink,#241b14)}
.family-card-content{opacity:1;transform:translateY(0) scale(1);transition:opacity .42s ease,transform .42s cubic-bezier(.22,.61,.36,1);transform-origin:center 40%}
.family-card.is-changing .family-card-content{opacity:0;transform:translateY(3px) scale(.985)}
.family-photo{aspect-ratio:1;position:relative;overflow:hidden;background:#ffe6aa}
.family-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.family-card:hover .family-photo img{transform:scale(1.025)}
.family-card{--family-caption-color:#ebe1f6}.family-card:nth-child(2){--family-caption-color:#dfeee1}.family-card:nth-child(3){--family-caption-color:#ffeab6}.family-card:nth-child(4){--family-caption-color:#f4dfe7}
.family-caption{padding:16px 17px;height:176px;box-sizing:border-box;background:linear-gradient(145deg,rgba(255,255,255,.4),transparent 70%),var(--family-caption-color);border-top:1px solid rgba(36,27,20,.12)}
.family-caption h3{font-size:17px;line-height:1.3;height:62px;margin:0;overflow-wrap:anywhere;overflow:hidden}.family-name-intro{display:block;font-size:12px;line-height:1.3;letter-spacing:.02em;font-weight:600;color:#59465f;margin-bottom:3px}.family-dog-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.family-caption p{font-size:14px;line-height:1.55;margin:8px 0 0;overflow-wrap:anywhere;white-space:pre-line;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;color:#493c35;font-style:italic}.family-caption p::before{content:'„';font-size:18px;font-weight:700;line-height:0;color:#765578}.family-caption p::after{content:'“';font-size:18px;font-weight:700;line-height:0;color:#765578}.family-caption p[hidden]{display:none}
.family-empty:nth-child(2) .family-photo{background:#d6e8ff}.family-empty:nth-child(3) .family-photo{background:#e2e9ca}.family-empty:nth-child(4) .family-photo{background:#f4dfe3}
.family-empty .family-photo{display:flex;flex-direction:column;gap:15px;align-items:center;justify-content:center;padding:25px;text-align:center}
.family-empty .family-photo>span:first-child{font-size:46px;opacity:.5;transform:rotate(-14deg)}.family-empty .family-photo>span:last-child{font-size:14px;font-weight:750;line-height:1.5;max-width:170px}
.family-empty-note{margin:24px 0 0;font-size:14px;text-align:center;color:#6c5b4c}
.family-gallery-controls{display:flex;justify-content:flex-end;margin-top:16px}.family-gallery-controls[hidden]{display:none}.family-gallery-pause{min-height:44px;padding:9px 14px;border:1px solid #8e7796;border-radius:12px;background:#fff9ec;color:#503074;font:700 12px/1.5 var(--body,system-ui);cursor:pointer}.family-gallery-pause:hover{background:#f2e9f6}.family-gallery-pause:focus-visible{outline:3px solid #503074;outline-offset:3px}
.family-dialog{width:min(580px,calc(100% - 28px));max-height:calc(100dvh - 36px);padding:0;border:2px solid var(--ink,#241b14);border-radius:26px;background:#fff9ec;color:var(--ink,#241b14);box-shadow:8px 8px 0 #241b14;overflow:auto;overscroll-behavior:contain}
.family-dialog::backdrop{background:rgba(36,27,20,.58);backdrop-filter:blur(4px)}
.family-dialog-inner{position:relative;padding:32px}.family-dialog h2{font-size:clamp(22px,4vw,29px);line-height:1.2;padding-right:26px}.family-dialog .eyebrow{padding-right:32px;font-size:10px}
.family-dialog-close{position:absolute;right:14px;top:14px;width:38px;height:38px;display:grid;place-items:center;font:30px/1 system-ui;background:#ffc81e;border:2px solid #241b14;border-radius:50%;color:#241b14;cursor:pointer}
.family-form{margin-top:24px}.family-form .family-field{margin:0 0 17px}.family-field>label{display:block;font-weight:750;font-size:14px;line-height:1.5;margin:0 0 6px}.family-optional{font-size:11px;font-weight:500;color:#756456;margin-left:6px}
.family-form input[type=text],.family-form textarea{width:100%;box-sizing:border-box;border:2px solid #241b14;border-radius:13px;padding:12px 14px;font:16px/1.5 var(--body,system-ui);color:#241b14;background:#fff}
.family-form input[type=file]{display:block;width:100%;font:14px/1.5 var(--body,system-ui);padding:10px;border:2px dashed #b7a58e;border-radius:13px;background:#fff;color:#241b14}
.family-form input[type=file]::file-selector-button{border:0;border-radius:7px;background:#ffe394;color:#241b14;padding:9px 12px;margin-right:12px;font:700 13px var(--body,system-ui);cursor:pointer}
.family-field>small{display:block;font-size:12px;margin-top:5px;color:#6c5b4c}
.family-field>.family-limit-help,.family-admin .family-limit-help{display:flex;align-items:center;justify-content:space-between;gap:12px}.family-limit-help [data-family-count]{font-variant-numeric:tabular-nums;white-space:nowrap}.family-limit-help .is-over-limit{color:#a72814;font-weight:700}
.family-upload-preview{width:110px;height:110px;object-fit:cover;border:2px solid #241b14;border-radius:13px;margin-top:10px}.family-upload-preview[hidden]{display:none}
.family-permission{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.65;margin-top:17px;cursor:pointer}.family-permission input{flex:0 0 18px;width:18px;height:18px;accent-color:#503174;margin:3px 0 0}.family-permission span{min-width:0}.family-permission a{color:#503174;font-weight:700;text-decoration:underline}
.family-form-note{margin:12px 0 0;font-size:12px;color:#6c5b4c;line-height:1.6}.family-form-status:empty{display:none}.family-form-status,.family-result{padding:13px 15px;border-radius:13px;background:#fff0b5;font-size:14px;line-height:1.6;border:1px solid #bba15a;margin:18px 0}
.family-form-status.is-error,.family-result.is-error{background:#ffe1d8;border-color:#b32912;color:#7a1e0d}.family-form-status.is-success,.family-result.is-success{background:#ddf2de;border-color:#4d8053;color:#204729}.family-send{width:100%;margin-top:17px}.family-send:disabled{opacity:.65;cursor:wait}.family-honey{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.family-standalone{max-width:630px!important}.family-standalone h1{font-size:clamp(27px,5vw,38px);line-height:1.2}.family-standalone .family-form{padding:28px;border:2px solid #241b14;border-radius:24px;background:#fff9ec}
.family-admin .family-admin-preview{display:block;max-width:200px;aspect-ratio:1;object-fit:cover;border-radius:15px;border:2px solid #241b14;margin-bottom:18px}
.family-admin .family-admin-grid{display:grid;gap:15px}.family-admin-card>img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:13px;border:2px solid #241b14;display:block;margin-bottom:14px}.family-admin-card h3{margin-bottom:8px}.family-admin-card .row form{margin:0}.family-admin-publish{display:flex;gap:9px;align-items:center;margin:18px 0}.family-admin-publish input{width:18px;height:18px;accent-color:#17a55b}.family-admin input[type=file]{max-width:100%;font:14px var(--body,system-ui);padding:8px 0}
@media(min-width:1100px){.family-admin .acols{grid-template-columns:1fr 1.5fr}.family-admin .family-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:850px){.family-head{align-items:flex-start;flex-direction:column;gap:20px}.family-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}
@media(max-width:480px){.family-head .lead{font-size:15px}.family-head>.btn{width:100%}.family-grid{gap:12px}.family-card,.family-empty{border-radius:17px;box-shadow:3px 3px 0 #241b14}.family-empty .family-photo{padding:16px 10px;gap:10px}.family-empty .family-photo>span:first-child{font-size:34px}.family-empty .family-photo>span:last-child{font-size:12px}.family-caption{padding:12px 10px;height:164px}.family-caption h3{font-size:15px}.family-caption p{font-size:14px}.family-dialog{max-height:calc(100dvh - 24px);width:calc(100% - 24px);border-radius:20px;box-shadow:4px 4px 0 #241b14}.family-dialog-inner{padding:26px 19px 22px}.family-dialog-close{right:10px;top:10px;width:32px;height:32px}.family-form{margin-top:20px}.family-standalone .family-form{padding:20px 17px}.family-form input[type=file]{font-size:12px}}
@media(prefers-reduced-motion:reduce){.family-photo img,.family-card-content{transition:none}.family-card:hover .family-photo img{transform:none}.family-card.is-changing .family-card-content{opacity:1;transform:none}}

.family-request-wait{position:fixed;inset:0;z-index:3;display:grid;place-items:center;background:rgba(255,249,238,.95);backdrop-filter:blur(3px);padding:25px}.family-request-wait .page-loader-card{max-width:300px}.family-request-wait .loading-paws{justify-content:center}.family-request-wait .loader-dismiss{font-size:12px}

/* A lasting, unmistakable confirmation after a photo is safely queued. */
.family-success-dialog{width:min(530px,calc(100% - 32px));border-radius:30px;box-shadow:8px 8px 0 #241b14,0 28px 90px rgba(36,27,20,.25)}
.family-success-dialog::backdrop{background:rgba(36,27,20,.68);backdrop-filter:blur(6px)}
.family-success-panel{text-align:center;padding:36px 32px 32px;background:radial-gradient(circle at 6% 15%,#fff0ba 0,transparent 33%),radial-gradient(circle at 93% 70%,#f4dfe8 0,transparent 38%),#fff9ec;overflow-wrap:anywhere}
.family-success-panel .family-success-icon{width:120px;height:120px;display:grid;place-items:center;margin:0 auto 16px;font-size:64px;line-height:1;border-radius:50%;background:#f5dfe8}
.family-success-icon svg{display:block;width:100%;height:100%}
.family-success-panel .eyebrow{padding:0;margin:0 0 10px;background:transparent;color:#503074;font-size:11px;line-height:1.5}
.family-success-panel h2{padding:0;margin:0;font-size:clamp(25px,5vw,34px);line-height:1.2}
.family-success-panel .family-success-thanks,.family-success-panel h2+p{font-size:17px;font-weight:700;line-height:1.6;margin:17px 0 0}
.family-success-message,.family-success-panel h2+p+p{font-size:15px;line-height:1.7;color:#6c5b4c;margin:10px auto 0;max-width:390px}
.family-success-done{width:100%;margin:24px 0 0;min-height:54px;justify-content:center}
.family-success-panel .family-dialog-close{background:#fff9ec}
.family-standalone>.family-success-panel{margin-top:28px;border:2px solid #241b14;border-radius:26px;box-shadow:6px 6px 0 #241b14}
.page-family .sticky{display:none}
.family-form-status:focus-visible,.family-success-dialog button:focus-visible{outline:3px solid #503074;outline-offset:4px}
@media(max-width:480px){.family-success-dialog{width:calc(100% - 28px);border-radius:23px;box-shadow:4px 4px 0 #241b14}.family-success-panel{padding:35px 20px 24px}.family-success-panel .family-success-icon{width:100px;height:100px;margin-bottom:15px}.family-success-panel .family-success-thanks,.family-success-panel h2+p{font-size:16px}.family-success-message,.family-success-panel h2+p+p{font-size:14px;line-height:1.65}.family-success-done{margin-top:21px}}
