/* Account/calendar controls use the existing Golos, paper, greens and oval ink. */
.psy-app { color: var(--identity-green); font: inherit; line-height: 1.5; text-align: center; }
.psy-app *, .psy-app *::before, .psy-app *::after { box-sizing: border-box; }
.psy-app [hidden] { display: none !important; }
.psy-app .psy-panel { background: rgba(230,237,220,.68); border: 1px solid rgba(75,107,80,.2); border-radius: 18px; padding: clamp(14px,2vw,24px); margin: 12px 0; }
.psy-app .psy-panel:nth-of-type(3n+2) { background: rgba(226,233,225,.68); }
.psy-app .psy-panel:nth-of-type(3n) { background: rgba(230,234,223,.68); }
.psy-app .psy-title { font: var(--matched-card-heading,500 22px/1.26 "Golos Text",Arial,sans-serif); margin: 0 0 12px; text-align: center; }
.psy-app p { margin: 10px 0 !important; font: inherit; line-height: 1.5 !important; }
.psy-app .psy-note, .psy-app .psy-progress { color: #607469; font-size: 1em; }
.psy-app .psy-progress { margin: 0 0 8px; }
.psy-app .psy-or { text-align: center; letter-spacing: .06em; color: #607469; }
.psy-app .psy-actions { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 10px 16px; margin: 14px 0 4px; }
.psy-app .psy-button { position: relative; display: inline-flex; justify-content: center; align-items: center; isolation: isolate; min-height: 44px; max-width: 100%; padding: 10px 24px; margin: 0; border: 0; background: transparent; color: var(--identity-green); font: inherit; line-height: 1.2; cursor: pointer; text-decoration: none; }
.psy-app .psy-button > svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; z-index: -1; color: #597362; }
.psy-app .psy-button > span { position: relative; }
.psy-app .psy-button[aria-pressed="true"] { border-radius: 12px; background: rgba(197,215,185,.52); font-weight: 600; }
.psy-app .psy-button[disabled] { opacity: .45; filter: grayscale(1); cursor: default; }
.psy-app .psy-button.psy-button--completed[disabled] { opacity: 1; filter: none; }
.psy-app .psy-phone { display: flex; align-items: center; gap: 10px; border: 1px solid rgba(55,87,60,.35); border-radius: 11px; background: rgba(246,244,238,.82); padding-left: 12px; }
.psy-app .psy-phone > input:not([type="checkbox"]) { border: 0; background: none; padding-left: 0; }
.psy-app .psy-repeat { transition: text-shadow 5s ease-in-out; }
.psy-app .psy-repeat.is-visible { text-shadow: .3px 0 currentColor,-.3px 0 currentColor; }
.psy-app .psy-start-title { background: rgba(188,210,172,.58); border-radius: 12px; cursor: default; font: var(--matched-card-heading,500 22px/1.26 "Golos Text",Arial,sans-serif); }
.psy-app .psy-start-title--arrive { animation: psy-start-tint 420ms ease-out both; }
.psy-app .psy-start-title--arrive > span { animation: psy-title-arrive 420ms cubic-bezier(.2,.7,.2,1) both; }
.psy-app .psy-stage-reveal { animation: psy-stage-arrive 320ms cubic-bezier(.2,.7,.2,1) both; }
@keyframes psy-start-tint { from { background-color: transparent; } to { background-color: rgba(188,210,172,.58); } }
@keyframes psy-title-arrive { from { opacity: .15; transform: translateY(22px); } to { opacity: 1; transform: translateY(0); } }
@keyframes psy-stage-arrive { from { opacity: .2; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@media(prefers-reduced-motion:reduce) { .psy-app .psy-start-title--arrive, .psy-app .psy-start-title--arrive > span { animation-duration: 300ms; } .psy-app .psy-stage-reveal { animation-duration: 260ms; } }
.psy-booking-dialog { width: min(850px,calc(100% - 24px)); max-width: calc(100% - 24px); max-height: calc(100dvh - 32px); padding: 18px clamp(12px,3vw,28px); border: 1px solid rgba(75,107,80,.25); border-radius: 22px; background: #f6f4ee; color: var(--identity-green); font: inherit; box-sizing: border-box; overscroll-behavior: contain; scrollbar-gutter: stable; }
.psy-booking-dialog[open] { animation: psy-stage-arrive 280ms cubic-bezier(.2,.7,.2,1) both; }
.psy-booking-dialog::backdrop { background: rgba(30,43,35,.34); backdrop-filter: blur(2px); }
.psy-booking-dialog .psy-modal-close { position: sticky; top: 0; z-index: 3; display: block; width: 42px; min-height: 38px; margin: 0 0 0 auto; padding: 4px 10px; }
.psy-booking-dialog .psy-app { clear: both; }
body.psy-booking-modal-open { overflow: hidden; }
.psy-app .psy-button:focus-visible, .psy-app input:focus-visible, .psy-app select:focus-visible, .psy-app textarea:focus-visible { outline: 2px solid var(--identity-green); outline-offset: 3px; }
.psy-app .psy-button--small { font-size: .9em; padding: 8px 18px; min-height: 40px; }
.psy-app .psy-form { max-width: 630px; margin: 0 auto; padding: 0; border: 0; background: none; box-shadow: none; text-align: left; }
.psy-app .psy-form-intro { text-align: center; }
.psy-app .psy-check > span { min-width: 0; white-space: normal; }
.psy-app .psy-field { display: flex; flex-direction: column; gap: 5px; width: 100%; min-width: 0; margin: 12px 0; }
.psy-app .psy-field > span { font-size: .95em; }
.psy-app .psy-service-choice { margin-top: 18px; }
.psy-app .psy-service-choice .psy-field > span { font-size: 1em; }
.psy-app input:not([type="checkbox"]), .psy-app select, .psy-app textarea { display: block; width: 100%; min-width: 0; max-width: 100%; border: 1px solid rgba(55,87,60,.35); border-radius: 11px; background: rgba(246,244,238,.82); color: inherit; font: inherit; font-size: max(16px,1em); line-height: 1.4; min-height: 44px; padding: 10px 12px; }
.psy-app .psy-field > .psy-phone { font-size: max(16px,1em); align-items: baseline; }
.psy-app .psy-phone > span { flex: 0 0 auto; font: inherit; line-height: 1.4; white-space: nowrap; }
.psy-app .psy-phone > input:not([type="checkbox"]) { flex: 1 1 0; width: 0; font: inherit; line-height: 1.4; }
.psy-app textarea { resize: vertical; min-height: 84px; }
.psy-app .psy-check { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0; font-size: .9em; line-height: 1.45; }
.psy-app .psy-check input { flex: none; width: 20px; height: 20px; accent-color: var(--identity-green); margin: 1px 0 0; }
.psy-app .psy-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 16px; }
.psy-app .psy-calendar { width: min(100%,490px); margin: 14px auto; }
.psy-app .psy-calendar__grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 4px; }
.psy-app .psy-day-name { padding: 6px 0; font-size: .8em; opacity: .75; }
.psy-app .psy-day { border: 1px solid rgba(55,87,60,.25); border-radius: 10px; background: rgba(246,244,238,.45); color: inherit; font: inherit; min-height: 44px; padding: 5px 0; cursor: pointer; }
.psy-app .psy-day:disabled { opacity: .38; cursor: default; border-color: transparent; }
.psy-app .psy-day[aria-pressed="true"] { background: rgba(188,210,172,.64); border-color: #597362; font-weight: 700; }
.psy-app .psy-slot { min-width: 110px; padding: 10px 14px; white-space: nowrap; }
.psy-app .psy-times { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; }
.psy-app .psy-status { min-height: 1.5em; margin: 10px 0; text-align: center; }
.psy-app .psy-status:empty { min-height: 0; margin: 0; }
.psy-app .psy-status--error { color: #814b36; }
.psy-app .psy-summary { max-width: 650px; margin: 12px auto; }
.psy-app .psy-summary p { margin: 7px 0 !important; }
.psy-app .psy-meeting { text-align: left; }
.psy-app .psy-meeting .psy-title { text-align: left; }
.psy-app .psy-badge { display: inline-block; border: 1px solid rgba(55,87,60,.25); border-radius: 12px; padding: 2px 10px; font-size: .85em; }
.psy-app .psy-code { font-size: clamp(28px,5vw,40px); font-weight: 600; letter-spacing: .15em; }
.psy-app .psy-record { border-bottom: 1px solid rgba(55,87,60,.16); padding: 12px 0; }
.psy-app .psy-record:last-child { border-bottom: 0; }
.psy-app .psy-weekday { margin: 18px 0; padding: 14px 0 0; border-top: 1px solid rgba(55,87,60,.16); }
.psy-app details > summary { cursor: pointer; text-align: center; margin: 12px 0; text-decoration: underline; text-underline-offset: .2em; }
.psy-app .psy-link { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.psy-app .psy-text-action { border: 0; border-radius: 0; background: none; box-shadow: none; padding: 0; margin: 0; color: inherit; font: inherit; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.psy-app .psy-text-action:focus-visible { outline: 2px solid var(--identity-green); outline-offset: 4px; }
.psy-app .psy-inline { display: inline; }
.psy-app .psy-link-row { display: flex; gap: 12px 20px; justify-content: center; flex-wrap: wrap; }
body.cabinet-page main.cabinet-main { width: min(950px,calc(100% - var(--identity-gutter)*2)); margin: 20px auto 40px; padding: 0; }
body.cabinet-page main h1 { font: 500 var(--identity-title)/1.2 var(--identity-font); text-align: center; margin: 20px 0; }
@media(max-width:480px) { .psy-app .psy-form-grid { grid-template-columns: 1fr; gap: 0; } .psy-app .psy-actions { gap: 8px; } .psy-app .psy-panel { padding: 14px 10px; } }

.psy-app .psy-guest-captcha .psy-form{text-align:center}
.psy-app .psy-guest-captcha .psy-field{width:min(100%,12rem);margin-inline:auto;text-align:center}
.psy-app .psy-guest-captcha input{text-align:center}
.psy-app .psy-captcha-question{font-size:1.25em;font-weight:600;margin:0}

.psy-app .psy-contact-preference{min-width:0;margin:0;padding:0 0 8px;border:0}
.psy-contact-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(4px,2vw,12px);max-width:390px;margin:8px auto 0}
.psy-contact-option{position:relative;cursor:pointer}
.psy-app .psy-contact-option input[type=radio]{position:absolute;width:1px;height:1px;min-height:0;padding:0;margin:0;border:0;clip-path:inset(50%)}
.psy-contact-option span{display:grid;justify-items:center;gap:5px;padding:8px 2px;border:1px solid #a8b6a3;border-radius:12px;background:#f6f4ee;font-size:clamp(.78rem,3.4vw,1rem);white-space:nowrap}
.psy-contact-option input:checked+span{background:#cfddc2;border-color:#597362}
.psy-contact-option input:focus-visible+span{outline:2px solid currentColor;outline-offset:2px}

.psy-booking-dialog.psy-dialog-keyboard[open] {
  position: fixed;
  inset-block: calc(var(--psy-visible-top) + 8px) auto;
  margin-block: 0;
  max-height: calc(var(--psy-visible-height) - 16px);
  animation: none;
}

.psy-captcha-image{display:block;width:min(100%,320px);height:auto;aspect-ratio:16/5;margin:0 auto 12px;border-radius:12px;border:1px solid #bccab7}
.psy-guest-captcha .psy-field{max-width:320px;margin-inline:auto}
.psy-guest-captcha input[name="answer"]{text-align:center;letter-spacing:.2em;text-transform:uppercase;font-size:1.3em}
.psy-contract-acceptance{max-width:640px;margin:18px auto;text-align:left}
.psy-contract-acceptance[hidden]{display:none}
.psy-contract-acceptance .psy-check{align-items:flex-start;font-size:.9em;line-height:1.5}
.psy-contract-acceptance input{flex:0 0 auto;margin-top:.18em}
