.modal-overlay{z-index:10000;padding:max(1rem, env(safe-area-inset-top,0px)) max(1rem, env(safe-area-inset-right,0px)) max(1rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));background:var(--surface-overlay);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay:not(.modal-overlay--closing){animation:modal-fade-in var(--duration-fast) var(--ease-smooth)}.modal-overlay--closing{animation:modal-fade-out var(--duration-fast) var(--ease-smooth) forwards;pointer-events:none}.pe-modal{border:1px solid var(--border-default);background:var(--surface-elevated);width:min(100%,36rem);max-height:min(90dvh,100%);box-shadow:var(--shadow-lg);border-radius:.75rem;flex-direction:column;display:flex;overflow:hidden}.pe-modal:not(.modal--schedule):not(.modal--report):not(.modal--calendar):not(.modal--wide):not(.modal--form):not(.modal--insights):not(.modal--shop) .modal__header{flex-shrink:0}.pe-modal:not(.modal--schedule):not(.modal--report):not(.modal--calendar):not(.modal--wide):not(.modal--form):not(.modal--insights):not(.modal--shop) .modal__body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;overflow:hidden auto}.modal--form{max-height:min(90dvh,100%)}.modal--form:has(.portal-select__trigger--open){overflow:visible}.modal--form .modal__header{flex-shrink:0}.modal--form .modal__body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;overflow:hidden auto}.modal--form:has(.portal-select__trigger--open) .modal__body{overflow:visible}.modal--wide{width:min(100%,52rem);max-height:min(92dvh,100%)}.modal--wide .modal__header{flex-shrink:0}.modal--wide .modal__body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;overflow:hidden auto}.modal--shop{width:min(100%,44rem);height:auto;max-height:min(90dvh,100%)}.modal--shop .modal__header{flex-shrink:0}.modal--shop .modal__body{-webkit-overflow-scrolling:touch;flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden auto}.modal--insights{width:min(100%,52rem);height:min(92dvh,44rem);max-height:min(92dvh,100%)}.modal--insights .modal__header{flex-shrink:0}.modal--insights .modal__body{flex-direction:column;flex:auto;min-height:0;padding:1.25rem 1.5rem;display:flex;overflow:hidden}.modal--schedule{width:min(100%,58rem);max-height:min(92dvh,100%)}.modal--schedule .modal__header{flex-shrink:0;padding:1.25rem 1.75rem}.modal--schedule .modal__title{font-size:1.25rem}.modal--report{width:min(100%,60rem);max-height:min(92dvh,100%);animation:modal-calendar-in var(--duration-normal) var(--ease-spring)}.modal--report .modal__header{background:var(--surface);flex-shrink:0;padding:1.25rem 1.75rem}.modal--report .modal__title{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.25rem;font-weight:800}.modal--report .modal__close{width:2.25rem;height:2.25rem;transition:background-color var(--duration-fast) var(--ease-smooth), color var(--duration-fast) var(--ease-smooth), transform var(--duration-fast) var(--ease-spring)}.modal--report .modal__close:hover{transform:scale(1.06)}.modal--report .modal__body{-webkit-overflow-scrolling:touch;background:color-mix(in srgb, var(--brand-primary) 4%, var(--surface-background));flex:auto;min-height:0;padding:0;overflow:hidden auto}.modal--calendar{width:min(100%,52rem);max-height:min(92dvh,100%);animation:modal-calendar-in var(--duration-normal) var(--ease-spring);overflow:visible}.modal--calendar .modal__header{flex-shrink:0;padding:1.25rem 1.75rem}.modal--calendar .modal__title{font-size:1.25rem}.modal--calendar .modal__close{width:2.25rem;height:2.25rem;transition:background-color var(--duration-fast) var(--ease-smooth), color var(--duration-fast) var(--ease-smooth), transform var(--duration-fast) var(--ease-spring)}.modal--calendar .modal__close:hover{transform:scale(1.06)}.modal--calendar .modal__body{flex:auto;min-height:0;padding:0;overflow:visible}.modal__header-actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.modal--schedule .modal__body{-webkit-overflow-scrolling:touch;flex:auto;min-height:0;padding:0;overflow:hidden auto}.modal__header{border-bottom:1px solid var(--border-default);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem 1.5rem;display:flex}.modal__title{color:var(--text-primary);margin:0;font-size:1.0625rem;font-weight:600;line-height:1.4}.modal__close{width:2rem;height:2rem;color:var(--text-muted);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-smooth);background:0 0;border:none;border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:1.5rem;line-height:1;display:inline-flex}.modal__close:hover{background:var(--surface-muted);color:var(--text-primary)}.modal__body{color:var(--text-secondary);padding:1.25rem 1.5rem;font-size:.9375rem;line-height:1.6;overflow-y:auto}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes modal-calendar-in{0%{opacity:0;transform:translateY(.75rem)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.modal-overlay:not(.modal-overlay--closing){animation:none}.modal-overlay--closing{opacity:0;animation:none}.modal--calendar,.modal--report{animation:none}.modal-loading__spinner{border-top-color:var(--brand-primary);opacity:.85;animation:none}}.modal-loading{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:.875rem;width:100%;padding:2.5rem 1.5rem;display:flex}.modal-loading__spinner{border:3px solid color-mix(in srgb, var(--brand-primary) 12%, var(--surface-muted));border-top-color:var(--brand-primary);border-radius:50%;flex-shrink:0;width:2.5rem;height:2.5rem;animation:.75s linear infinite modal-loading-spin}.modal-loading__label{font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0;font-size:.875rem;font-weight:500}.modal-loading--report{min-height:28rem}.modal-loading--calendar{min-height:min(92dvh - 5.25rem,38rem)}.modal-loading--schedule{min-height:min(92dvh - 5.25rem,34rem)}.modal--report .modal-loading,.modal--calendar .modal-loading,.modal--schedule .modal-loading{padding-inline:1.75rem}@keyframes modal-loading-spin{to{transform:rotate(360deg)}}
