/* v27 -- activate missing v25 layouts and provide tactile iPhone transitions */
:root{--v27-ease:cubic-bezier(.22,.8,.24,1)}
#content.v27-route-in{animation:v27FromRight .22s var(--v27-ease) both}
#content.v27-route-out{animation:v27FromLeft .20s var(--v27-ease) both}
@keyframes v27FromRight{from{opacity:.75;transform:translate3d(21px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes v27FromLeft{from{opacity:.75;transform:translate3d(-21px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
#modal .modalbox.v27-show{animation:v27SheetEnter .24s var(--v27-ease) both}
@keyframes v27SheetEnter{from{opacity:.86;transform:translate3d(50px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
#modal .modalbox.v27-leaving{animation:v27SheetExit .16s ease-in both;pointer-events:none}
@keyframes v27SheetExit{to{opacity:.7;transform:translate3d(36px,0,0)}}
button,.post-row,.chat-row,.mini-btn{-webkit-tap-highlight-color:transparent}
button:active:not(:disabled){filter:brightness(.96)}
/* No double outer and inner scrolling; the content scrolls only if needed. */
#modal.fullscreen25 .modalbox.fullsheet25{height:100dvh!important;max-height:100dvh!important;overflow:hidden!important;padding:0!important}
#modal.fullscreen25 .v25-sheet-scroll{flex:1;min-height:0;max-height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#modal.fullscreen25 .v25-sheet-scroll::-webkit-scrollbar{display:none}
#modal.fullscreen25 .v25-sheet-header{flex-shrink:0}
/* Calendar form: fixed header plus one vertically scrollable area. */
#modal.is-event24 .modalbox.event-sheet24{display:flex!important;flex-direction:column!important;overflow:hidden!important;padding:0!important;max-width:650px!important;height:100dvh!important;min-height:0!important}
#modal.is-event24 .event-header24{position:relative!important;top:auto!important;flex:0 0 auto!important;margin:0!important;padding:env(safe-area-inset-top) 12px 0!important;min-height:calc(56px + env(safe-area-inset-top));border-bottom:1px solid #e7eee8}
#modal.is-event24 .event-form24{display:flex;flex-direction:column;min-height:0;flex:1;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:16px 16px calc(36px + env(safe-area-inset-bottom));scrollbar-width:none}
#modal.is-event24 .event-form24::-webkit-scrollbar{display:none}
#modal.is-event24 .event-picker24{flex-shrink:0;min-height:0;overflow:visible!important}
#modal.is-event24 .event-picker24 .reserve-time-section{max-width:100%}
#modal.is-event24 .date-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:0;gap:3px}
#modal.is-event24 .pick-item{min-width:0;max-width:100%;box-sizing:border-box}
#modal.is-event24 .event-choice-date24{white-space:normal!important;overflow-wrap:normal!important}
@media(max-width:375px){#modal.is-event24 .event-form24{padding:12px 10px 36px}#modal.is-event24 .event-summary24 .event-choice{column-gap:3px!important}#modal.is-event24 .event-choice-date24{font-size:11px!important}#modal.is-event24 .event-choice-time24{font-size:11px!important}}
/* Guest: settings and profile intentionally contain only minimal information. */
.v27-guest-settings{padding:12px 3px;gap:12px!important}.v27-guest-settings button{min-height:50px;text-align:center}
/* Chat list: tap/drag left to reveal the round leave button (group -> leave, 1:1 -> hide). */
.swipe-row27{position:relative;width:100%;max-width:100%;overflow:hidden;border-radius:14px;margin-bottom:5px;touch-action:pan-y}
.swipe-actions27{position:absolute;inset:0 0 0 auto;width:82px;display:flex;align-items:center;justify-content:center;background:#f4f1ed}
.swipe-exit27{width:60px;height:60px;border:0;border-radius:50%;background:#ea655f;color:white;font-size:12px;font-weight:800;box-shadow:0 2px 9px #c5504c22}
.swipe-inner27{position:relative;background:#fffefa;transition:transform .22s var(--v27-ease);will-change:transform}
.swipe-row27.open27 .swipe-inner27{transform:translateX(-82px)!important}
.swipe-row27 .chat-row{width:100%;border-radius:0!important;margin:0!important}
/* New-room creator: aligned checkbox, avatar, name with a generous hit target. */
.v27-newroom{gap:13px}.v27-room-title{margin-bottom:2px}.v27-instruction{font-size:13px;color:#718174;margin:8px 0 4px}
.v27-people{display:flex;flex-direction:column;gap:0;border-block:1px solid #e8ede6}
.v27-person-option{display:flex!important;align-items:center!important;gap:13px!important;width:100%;min-height:62px;max-width:100%;border-bottom:1px solid #f0f3ee;padding:9px 3px!important;margin:0!important;white-space:normal}
.v27-person-option:last-child{border-bottom:0}.v27-person-option input[type=checkbox]{appearance:auto!important;flex:0 0 20px!important;width:20px!important;height:20px!important;margin:0!important;padding:0!important}
.v27-person-avatar{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:#e8ede8;display:grid;place-items:center;color:#38635b;font-size:13px;font-weight:700}
.v27-person-name{flex:1;font-size:14px;color:#263b32;min-width:0;font-weight:600}
.v27-vehicle-edit .v27-admin-controls{display:flex;flex-direction:column;gap:11px;margin-top:16px;padding-top:18px;border-top:1px solid #ebeee9}
.v27-vehicle-edit-button{white-space:nowrap;padding:8px 14px!important}.v27-admin-controls .danger{border-color:#e7b5ae;color:#b83e35}
@media(prefers-reduced-motion:reduce){#content.v27-route-in,#content.v27-route-out,#modal .modalbox.v27-show{animation:none!important}.swipe-inner27{transition:none!important}}
