.cm-reservation-modal,.cm-reservation-success{position:fixed;z-index:10000;inset:0;display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}
.cm-reservation-modal[hidden],.cm-reservation-success[hidden]{display:none!important}
.cm-reservation-modal.is-open,.cm-reservation-success.is-open{opacity:1;visibility:visible}
.cm-reservation-modal__backdrop,.cm-reservation-success__backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(20,24,20,.72);backdrop-filter:blur(4px);cursor:pointer}
.cm-reservation-modal__dialog,.cm-reservation-success__dialog{position:relative;width:min(680px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:36px;background:#fcfaf6;color:#29251f;border:1px solid #e7ded2;border-radius:10px;box-shadow:0 24px 70px #0005;transform:translateY(12px);transition:transform .2s ease}
.cm-reservation-modal.is-open .cm-reservation-modal__dialog,.cm-reservation-success.is-open .cm-reservation-success__dialog{transform:none}
.cm-reservation-modal__close{position:absolute;top:14px;right:15px;display:grid;place-items:center;width:38px;height:38px;border:1px solid #ded6cb;border-radius:50%;background:#fff;color:#43392f;font-size:25px;line-height:1;cursor:pointer}
.cm-reservation-modal__head>span{color:#b76849;font-size:10px;font-weight:800;letter-spacing:.17em}
.cm-reservation-modal__head h2,.cm-reservation-success__dialog h2{margin:9px 42px 8px 0;color:#29251f;font:600 clamp(30px,4vw,42px)/1.08 'Playfair Display',Georgia,serif;letter-spacing:-.035em}
.cm-reservation-modal__head p,.cm-reservation-success__dialog p{max-width:560px;margin:0 0 23px;color:#625e56;font-size:14px;line-height:1.65}
.cm-reservation-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.cm-reservation-form label{display:grid;gap:6px;min-width:0;color:#37342e;font-size:12px;font-weight:700}
.cm-reservation-form input,.cm-reservation-form textarea{box-sizing:border-box;width:100%;min-height:44px;padding:10px 12px;border:1px solid #ded8cf;border-radius:4px;background:#fff;color:#302e2a;font:400 14px 'DM Sans',sans-serif;outline:none}
.cm-reservation-form input:focus,.cm-reservation-form textarea:focus{border-color:#a96649;box-shadow:0 0 0 3px #b66a501c}
.cm-reservation-form input:invalid:not(:placeholder-shown){border-color:#a9493e}
.cm-reservation-form__note{margin-top:14px}
.cm-reservation-form textarea{resize:vertical;min-height:82px}
.cm-reservation-form__feedback{min-height:0;margin:9px 0;color:#9b382f;font-size:12px;line-height:1.5}
.cm-reservation-form__feedback:empty{display:none}
.cm-reservation-form__submit,.cm-reservation-success__ok{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:48px;padding:12px 16px;border:0;border-radius:4px;background:#b66a50;color:#fff;font:700 13px 'DM Sans',sans-serif;cursor:pointer}
.cm-reservation-form__submit:hover,.cm-reservation-success__ok:hover{background:#955137}
.cm-reservation-form__submit:disabled{opacity:.6;cursor:wait}
.cm-reservation-form__submit>span:last-child{font-size:19px;font-weight:400}
.cm-reservation-success{z-index:10001}
.cm-reservation-success__dialog{width:min(460px,100%);padding:38px;text-align:center}
.cm-reservation-success__icon{display:grid;place-items:center;width:54px;height:54px;margin:0 auto 17px;border-radius:50%;background:#193d30;color:#fff;font-size:26px}
.cm-reservation-success__dialog h2{margin:0 0 9px;font-size:32px}
.cm-reservation-success__dialog p{margin:0 0 22px}
.cm-reservation-success__ok{justify-content:center;width:auto;min-width:130px;margin:auto}
@media(max-width:600px){.cm-reservation-modal,.cm-reservation-success{padding:10px}.cm-reservation-modal__dialog,.cm-reservation-success__dialog{max-height:calc(100vh - 20px);padding:29px 20px 22px}.cm-reservation-form__grid{grid-template-columns:1fr;gap:12px}.cm-reservation-modal__head p{margin-bottom:18px}}
@media(prefers-reduced-motion:reduce){.cm-reservation-modal,.cm-reservation-success,.cm-reservation-modal__dialog,.cm-reservation-success__dialog{transition:none}}
