.realization-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:36px}.realization-photo{margin:0;min-width:0;background:#f8f6f0;border:1px solid #d1d6cd}.realization-photo a{display:block;background:#dfe4dc;overflow:hidden}.realization-photo img{display:block;width:100%;height:360px;object-fit:cover;transition:transform .3s}.realization-photo a:hover img{transform:scale(1.025)}.realization-photo figcaption{display:flex;gap:14px;padding:20px;font-size:.94rem;line-height:1.55}.realization-photo figcaption>span{color:#8b6408;font-size:.78rem;letter-spacing:.1em;padding-top:3px}.empty-photo{height:240px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#66766c;background:linear-gradient(135deg,#e4e9e0,#f0eee5);border-bottom:1px solid #d1d6cd}.empty-photo>span{position:absolute;top:16px;left:20px;font-family:var(--display);font-size:2rem;opacity:.35}.empty-photo svg{width:50px;height:50px}.empty-photo small{font-size:.8rem;letter-spacing:.06em}.project-cover{padding:0;overflow:hidden}.project-cover img{width:100%;height:270px;object-fit:cover}.reviews-section .shell{max-width:900px}.review-compose{margin-top:40px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.review-compose summary{cursor:pointer;padding:24px 0;font-size:1.15rem;font-weight:600}.review-compose summary:focus-visible{outline:3px solid #ad7600}.review-form{display:grid;gap:14px;padding:0 0 28px;max-width:680px}.review-form input:not([type=radio]):not([type=checkbox]),.review-form textarea,.admin-review textarea,.admin-review select{width:100%;padding:14px;border:1px solid #8c9a8f;background:#fff;font:inherit;color:var(--green-deep);border-radius:0}.review-form fieldset{border:0;padding:12px 0;margin:0}.rating-picker{display:flex;gap:10px;margin-top:12px}.rating-picker label{position:relative;cursor:pointer}.rating-picker input{position:absolute;opacity:0}.rating-picker label>span{display:block;padding:12px 16px;border:1px solid #8c9a8f}.rating-picker input:checked+span{background:var(--green-deep);color:#f2d78d;border-color:var(--green-deep)}.rating-picker input:focus-visible+span{outline:3px solid #ad7600;outline-offset:3px}.review-consent{display:flex;align-items:flex-start;gap:12px;font-size:.9rem}.review-consent input{margin-top:6px;flex-shrink:0;width:18px;height:18px}.honey{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.review-form button{justify-self:start}.review-result{margin:0;line-height:1.6}.review-card{border:1px solid var(--line);padding:26px;margin:24px 0;background:#faf8f2;overflow-wrap:anywhere}.review-card p{white-space:pre-wrap}.review-meta{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.review-stars{color:#89600c;letter-spacing:3px;font-size:1.2rem}.review-reply{border-left:3px solid #ac9352;padding-left:20px;margin-top:24px}.review-card time{font-size:.85rem;color:#526059}.featured-reviews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.featured-reviews .review-card{margin-bottom:0}.featured-reviews>p{grid-column:1/-1}.photo-dialog{padding:20px;background:#172e2b;color:white;border:0;max-width:94vw;max-height:94vh}.photo-dialog::backdrop{background:#000b}.photo-dialog img{display:block;max-height:75vh;max-width:85vw;object-fit:contain;margin:12px auto}.photo-dialog button{background:#fff;color:#1d3937;padding:10px 20px;border:0;cursor:pointer;font:inherit}.photo-dialog p{margin-bottom:0}.admin-review{margin-bottom:30px;padding:24px;border:1px solid var(--line)}.admin-review form{display:grid;gap:14px}.admin-review textarea{min-height:100px}.admin-toolbar{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin:24px 0}.admin-toolbar select{padding:12px;font:inherit}.review-empty{padding:24px 0;color:#526059}.review-status{display:inline-block;padding:4px 10px;background:#e9e6df;font-size:.85rem}
@media(max-width:900px){.realization-gallery,.featured-reviews{grid-template-columns:repeat(2,minmax(0,1fr))}.realization-photo img{height:340px}}
@media(max-width:560px){.realization-gallery,.featured-reviews{grid-template-columns:1fr}.realization-photo img{height:430px}.rating-picker{gap:6px}.rating-picker label>span{padding:12px}.review-card{padding:20px}.photo-dialog{padding:12px}.photo-dialog img{max-width:80vw}.review-form button{width:100%}}
@media(prefers-reduced-motion:reduce){.realization-photo img{transition:none}}

/* Keep the full floor photographs visible in mixed portrait/landscape galleries. */
.floor-gallery .realization-photo img{height:auto;aspect-ratio:4/3;object-fit:contain}

/* Show the complete portrait photographs of the tiling details. */
.tiling-gallery .realization-photo img{height:auto;aspect-ratio:3/4;object-fit:contain}

/* Keep all four bathroom photographs and the custom doors visible. */
.lhota-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
.lhota-gallery .realization-photo img{height:auto;aspect-ratio:3/4;object-fit:contain}
@media(max-width:560px){.lhota-gallery{grid-template-columns:1fr}}

/* Preserve full views of the technical installation and its details. */
.technical-gallery .realization-photo img{height:auto;aspect-ratio:4/3;object-fit:contain}
