/* 章移動はJSだけで制御し、外側のネイティブスクロール・スナップと競合させない。
   募集要項・フォームなど長文の内側はネイティブスクロールを維持する。 */
html, body { height: 100%; overflow: hidden; overscroll-behavior-y: none; }
body { padding-top: 0; }
.swipe-container { position: fixed; inset: 42px 0 36px; overflow-x: hidden; overflow-y: hidden; scroll-snap-type: none; overscroll-behavior: none; scrollbar-width: none; }
.swipe-section { position: relative; width: 100%; height: 100%; overflow: hidden; scroll-snap-align: start; scroll-snap-stop: always; overscroll-behavior-y: contain; }
.swipe-section.is-long-section { overflow-y: auto; overscroll-behavior-y: contain; -webkit-overflow-scrolling: touch; }
.swipe-container, .swipe-section { scroll-behavior: auto; }
.swipe-content { display: flow-root; }
.swipe-container::-webkit-scrollbar, .swipe-section::-webkit-scrollbar { display: none; }
.swipe-section textarea, .swipe-section [contenteditable="true"] { overscroll-behavior-y: contain; }

/* 章は動的viewportから固定UIの実測値を引いた高さに統一する。 */
.swipe-container { --header-height:64px; --bottom-ui-height:0px; height:calc(100dvh - var(--header-height) - var(--bottom-ui-height)); bottom:auto; }
.swipe-section { height:100%; box-sizing:border-box; }
.swipe-content { box-sizing:border-box; min-height:calc(100dvh - var(--header-height) - var(--bottom-ui-height)); }

/* 文字・画像をまとめて縦中央へ配置する際の高さ測定用。 */
.section-content-group { display:flow-root; }
