/* Same geometry as approved lower-panel reference. Navigation stays fixed. */
[data-cab-root]{width:100%;max-width:600px;margin:0 auto;padding:18px 16px calc(24px + var(--tabbar-h) + var(--safe-b))}
body.has-mascot [data-cab-root]{padding-bottom:calc(124px + var(--tabbar-h) + var(--safe-b))}
body.cab-layer-open{overflow:hidden}
.cab-layer{position:fixed;inset:0 0 calc(var(--tabbar-h) + var(--safe-b));z-index:42;isolation:isolate}
.cab-layer-dim{position:absolute;inset:0;background:rgba(30,42,54,.27)}
.cab-layer-panel{position:absolute;top:calc(min(18dvh,112px) + var(--layer-depth)*12px);bottom:0;left:0;right:0;max-width:600px;margin:auto;display:flex;flex-direction:column;border:1px solid var(--edge);border-bottom:0;border-radius:24px 24px 0 0;background:var(--bg);box-shadow:0 -8px 30px rgba(30,42,54,.09);overflow:hidden}
.cab-layer-grip{width:28px;height:3px;flex:none;margin:9px auto 5px;border-radius:3px;background:var(--edge)}
.cab-layer-head{display:flex;align-items:center;justify-content:space-between;flex:none;padding:0 12px}
.cab-layer-head button{min-height:44px;border:0;background:transparent;color:var(--mut);font:inherit;padding:8px}
.cab-layer-close{min-width:44px;font-size:24px!important}
body .cab-layer-body,body.has-mascot .cab-layer-body,body #root.cab-layer-body,body.has-mascot #root.cab-layer-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:12px 16px 24px;margin:0;max-width:none}
.cab-layer-body > .back:first-child{display:none}
.cab-layer-body > .head:first-child > .back{display:none}
.cab-frozen{pointer-events:none;user-select:none}
body.cab-layer-open #mascot,body.cab-layer-open #bub{visibility:hidden}
body #sheet .sheet,body #confirm .sheet{animation:none;max-width:600px;margin:auto;bottom:calc(var(--tabbar-h) + var(--safe-b));max-height:calc(100dvh - var(--tabbar-h) - var(--safe-b) - 48px);border:1px solid var(--edge);border-bottom:0;padding-bottom:20px}
body.no-tabbar #sheet .sheet,body.no-tabbar #confirm .sheet{bottom:0}
body #sheet .body.scroll{max-height:60dvh}
.cab-sheet-close{position:absolute;right:8px;top:4px;width:44px;height:44px;border:0;background:transparent;color:var(--mut);font-size:24px}
body #sheet .title{padding-right:36px}
@media(max-height:520px){.cab-layer-panel{top:16px}.cab-layer-grip{margin-top:5px}.cab-layer-head button{min-height:36px}}

.cab-layer-body > .head:first-child:has(> .back){justify-content:flex-end}

/* Gentle entrance; no delay and no route/callback changes. */
@keyframes cab-panel-enter{from{transform:translateY(32px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes cab-dim-enter{from{opacity:0}to{opacity:1}}
.cab-layer-panel,body #sheet .sheet,body #confirm .sheet{animation:cab-panel-enter 280ms cubic-bezier(.22,1,.36,1) backwards}
.cab-layer-dim,body #sheet .dim,body #confirm .dim{animation:cab-dim-enter 200ms ease-out backwards}
@media(prefers-reduced-motion:reduce){
 .cab-layer-panel,body #sheet .sheet,body #confirm .sheet,
 .cab-layer-dim,body #sheet .dim,body #confirm .dim{animation:none}
}

/* Immediate feedback while a single or recurring session is being created. */
.session-submit-spinner{display:inline-block;width:16px;height:16px;flex:0 0 16px;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:8px;vertical-align:-3px;animation:session-submit-spin .8s linear infinite}
@keyframes session-submit-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.session-submit-spinner{animation:none}}
