.psl {
    --psl-blue: #0a2d78;
    --psl-yellow: #ffbf2f;
    --psl-white: #fff;
    display: grid;
    grid-template-columns: minmax(260px, .95fr) minmax(420px, 1.35fr);
    gap: 56px;
    align-items: center;
    width: 100%;
    color: var(--psl-white);
    font-family: inherit;
}

.psl__title {
    margin: 0 0 10px;
    color: var(--psl-white);
    font-size: 40px;
    line-height: 1.1;
}

.psl__copy {
    max-width: 520px;
    margin: 0 0 24px;
    line-height: 1.55;
}

.psl__form {
    display: flex;
    gap: 12px;
    align-items: center;
}

.psl .psl__input {
    flex: 1 1 220px;
    min-width: 0;
    height: 52px;
    padding: 0 22px;
    border: 2px solid transparent;
    border-radius: 999px !important;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
    background: var(--psl-white);
    color: var(--psl-blue);
    font: inherit;
}

.psl .psl__input:focus {
    border-color: var(--psl-yellow);
    box-shadow: 0 0 0 3px rgba(255, 191, 47, .25);
}

.psl__input--error { animation: psl-input-shake .38s ease-in-out; border-color: #ff6b6b; }
.psl__input--error::placeholder { color: #b42318; opacity: 1; }
@keyframes psl-input-shake {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-6px); }
    40% { transform: translateX(5px); }
    60% { transform: translateX(-4px); }
    80% { transform: translateX(2px); }
}
@media (prefers-reduced-motion: reduce) {
    .psl__input--error { animation: none; }
}

.psl .psl__button {
    height: 52px;
    padding: 0 24px;
    border: 0;
    border-radius: 999px !important;
    background: var(--psl-yellow);
    color: var(--psl-blue);
    font: inherit;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
    transition: transform .15s ease, filter .15s ease;
}

.psl .psl__button:hover { background: #f0860c; transform: translateY(-1px); }
.psl__button:focus-visible { outline: 3px solid var(--psl-white); outline-offset: 3px; }
.psl__message { display: flex; min-height: 24px; margin: 12px 0 0; flex-wrap: wrap; gap: 8px 12px; align-items: center; font-size: 14px; font-weight: 600; }
.psl__message:empty { display: none; }
.psl__notice { display: inline-block; }
.psl__suggestion { padding: 7px 13px; border: 1px solid rgba(255,255,255,.75); border-radius: 999px; background: transparent; color: #fff; font: inherit; font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.psl__suggestion:hover { background: rgba(255,255,255,.12); }
.psl__suggestion:focus-visible { outline: 3px solid var(--psl-yellow); outline-offset: 2px; }
.psl__microcopy { margin: 8px 0 0; font-size: 12px; opacity: .78; }
.psl__message:not(:empty) + .psl__microcopy { margin-top: 4px; }
.psl__map { width: 100%; height: 390px; border-radius: 18px; overflow: hidden; background: #dce8f4; }
.psl__map--error { display: flex; align-items: center; justify-content: center; padding: 24px; color: #0a2d78; font-weight: 700; text-align: center; }
.psl-pin-wrap { background: transparent; border: 0; }
.psl-pin { display: block; width: 58px; height: 34px; border: 3px solid #fff; border-radius: 999px; background: #0b5ed7 url('logo-philips.svg') center / 42px auto no-repeat; box-shadow: 0 3px 9px rgba(0,0,0,.28); }
.psl .marker-cluster-small,
.psl .marker-cluster-medium,
.psl .marker-cluster-large { background: rgba(11,94,215,.3); }
.psl .marker-cluster-small div,
.psl .marker-cluster-medium div,
.psl .marker-cluster-large div { background: #0b5ed7; color: #fff; font-weight: 800; box-shadow: 0 3px 9px rgba(0,0,0,.2); }
.psl .leaflet-popup-content-wrapper { border-radius: 14px; box-shadow: 0 10px 28px rgba(16, 43, 112, .22); }
.psl .leaflet-popup-content { margin: 18px; }
.psl-card { color: #18305f; font-family: inherit; }
.psl-card__title { margin: 0 0 7px; color: #0a2d78; font-size: 17px; line-height: 1.25; }
.psl-card__address { margin: 0 0 14px; color: #4b5563; font-size: 13px; line-height: 1.45; }
.psl-card__button { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 0 16px; border-radius: 999px; background: #ffbf2f; color: #0a2d78 !important; font-size: 13px; font-weight: 700; line-height: 1; text-decoration: none !important; }
.psl-card__button:hover { filter: brightness(1.04); }

@media (max-width: 767px) {
    .psl { grid-template-columns: 1fr; gap: 40px; }
    .psl__title { font-size: 28px; }
    .psl__copy { margin-bottom: 18px; font-size: 15px; }
    .psl__form { align-items: stretch; flex-direction: column; gap: 12px; }
    .psl .psl__input {
        flex: none;
        width: 100%;
        height: 46px;
        padding: 0 18px;
        font-size: 16px;
    }
    .psl .psl__button {
        width: 100%;
        height: 46px;
        padding: 0 20px;
        font-size: 15px;
    }
    .psl__message { margin-top: 9px; }
    .psl__map { height: clamp(440px, 68vh, 560px); border-radius: 14px; }
}
