/* SnapHub shared responsive rules. */

/* PC header layout contract.
 * Keep the 1depth navigation on one line and visually centered regardless of
 * authentication action width (login vs logout + mypage).
 */
@media (min-width: 1025px) {
	.site-header__inner {
		display: grid;
		grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
		align-items: center;
	}

	.brand--image {
		justify-self: start;
	}

	.primary-nav {
		justify-self: center;
		margin-left: 0;
		gap: clamp(32px,3vw,56px);
		white-space: nowrap;
	}

	.primary-nav a {
		white-space: nowrap;
		word-break: keep-all;
	}

	.header-actions {
		justify-self: end;
		margin-left: 0;
	}
}

@media (max-width: 1599px) and (min-width: 1200px) {
	:root {
		--desktop-content: calc(100vw - 64px);
		--page-gutter: 32px;
	}

	.site-header__inner {
		width: calc(100% - 64px);
	}

	.brand--image {
		width: clamp(154px,11.25vw,180px);
		margin-left: 0;
	}

	.primary-nav {
		margin-left: 0;
		gap: clamp(28px,3vw,48px);
	}

	.header-actions {
		margin-left: 0;
		gap: clamp(10px,1vw,14px);
	}

	.header-button {
		width: clamp(96px,7.2vw,108px);
		min-width: clamp(96px,7.2vw,108px);
		padding-inline: clamp(12px,1.2vw,18px);
	}

	.site-footer__inner {
		width: calc(100% - 64px);
	}

	.footer-nav-column {
		left: clamp(330px,30vw,384px);
	}

	.footer-policy {
		right: 0;
	}
}

/*
 * Compact desktop. Keep desktop information density,
 * but remove fixed-width clipping and negative carousel offsets.
 */

@media (max-width: 1199px) and (min-width: 1025px) {
	:root {
		--page-gutter: 24px;
		--desktop-content: calc(100vw - 48px);
		--footer-content: calc(100vw - 48px);
	}

	.site-header__inner {
		width: calc(100% - 48px);
	}

	.brand--image {
		width: 145px;
		margin-left: 0;
	}

	.primary-nav {
		margin-left: 0;
		gap: clamp(16px,2vw,24px);
		font-size: 12.5px;
	}

	.primary-nav a {
		padding-block: 30px;
	}

	.header-actions {
		margin-left: 0;
		gap: 10px;
	}

	.header-button {
		width: 92px;
		min-width: 92px;
		height: 40px;
		padding-inline: 11px;
		font-size: 13px;
	}

	.header-button--login {
		gap: 6px;
	}

	.header-button__login-icon {
		width: 15px;
		height: 17px;
		flex-basis: 15px;
	}

	.desktop-filter-layer__panel {
		left: clamp(20px,calc(var(--layer-left) - 34px),calc(100vw - 380px));
		top: calc(var(--layer-top) + 22px);
	}

	.site-footer {
		height: auto;
		min-height: 360px;
		padding-bottom: 24px;
		overflow: clip;
	}

	.site-footer__inner {
		width: calc(100% - 48px);
		height: auto;
		min-height: 336px;
		padding-top: 30px;
		display: grid;
		grid-template-columns: 250px minmax(0,1fr);
		grid-template-areas: "brand policy" "brand nav";
		grid-template-rows: auto 1fr;
		column-gap: clamp(24px,3.5vw,44px);
	}

	.footer-brand-column {
		position: static;
		grid-area: brand;
		width: 250px;
	}

	.footer-policy {
		position: static;
		grid-area: policy;
		justify-self: stretch;
		align-self: start;
		width: 100%;
		min-width: 0;
		margin-top: 12px;
		justify-content: flex-end;
		font-size: clamp(10px,1vw,12px);
		gap: clamp(8px,1.1vw,14px);
	}

	.footer-policy a {
		white-space: nowrap;
	}

	.footer-nav-column {
		position: static;
		grid-area: nav;
		align-self: start;
		margin-top: 46px;
		display: grid;
		grid-template-columns: 112px 112px minmax(210px,1fr);
		column-gap: clamp(12px,2vw,24px);
	}

	.footer-nav-column section {
		font-size: 12px;
		gap: 10px;
	}

	.footer-nav-column h3 {
		font-size: 14px;
	}
}

/*
 * 1024px and below share the approved mobile interaction model: mobile drawer,
 * touch-friendly lists and the same mobile information hierarchy. Tablet widths
 * do not introduce a separate visual tier; the mobile composition expands fluidly
 * with the viewport while component gutters keep content readable.
 */

@media (max-width: 1024px) {
	:root {
		--mobile-header-gutter: 13px;
		--mobile-header-logo-width: 146px;
		--mobile-header-action-size: 44px;
		--mobile-header-line-width: 24px;
		--mobile-header-line-height: 2px;
		--mobile-header-line-shift: 0px;
	}

	.site-header {
		position: relative;
		left: auto;
		right: auto;
		top: auto;
		height: 60px;
		background: var(--page-header-bg,#fff);
		border-bottom: 1px solid var(--page-header-border,#e5e5e5);
	}

	.site-header__inner {
		width: min(100%,768px);
		padding-inline: var(--mobile-header-gutter);
	}

	.site-header .brand--image {
		width: var(--mobile-header-logo-width);
		margin-left: 0;
	}

	.primary-nav,
	.header-actions {
		display: none;
	}

	.mobile-menu-button {
		position: relative;
		margin-left: auto;
		width: var(--mobile-header-action-size);
		height: var(--mobile-header-action-size);
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 6px;
	}

	.mobile-menu-button span {
		width: var(--mobile-header-line-width);
		height: var(--mobile-header-line-height);
		border-radius: 2px;
		background: var(--primary);
		transform: translateX(var(--mobile-header-line-shift));
	}

	/* Mobile content/footer boundary: one shared neutral divider across pages. */
	.site-footer {
		border-top: 1px solid #ededed;
	}

	.site-footer__inner {
		width: min(100%,768px);

		margin-inline: auto;
		padding: 20px 13px 0;
		display: block;
	}

	.footer-brand-column {
		position: static;
		width: 100%;
		text-align: center;
	}

	.footer-brand-row {
		justify-content: center;
		align-items: flex-start;
		gap: 10px;
	}

	.brand--footer {
		width: 134px;
		margin-left: 0;
	}

	.footer-social {
		gap: 10px;
	}

	.footer-social a {
		width: 28px;
		height: 28px;
		flex-basis: 28px;
		font-size: 12px;
	}

	.footer-policy {
		position: absolute;
		left: 13px;
		right: 13px;
		top: 67px;
		margin: 0;
		justify-content: center;
		gap: 24px;
		font-size: 10px;
	}

	.footer-notice {
		position: absolute;
		left: 13px;
		right: 13px;
		top: 91px;
		margin: 0;
		font-size: 9px;
		line-height: 1.45;
		text-align: center;
		white-space: normal;
	}

	.company-info {
		display: none;
	}

	.copyright {
		position: absolute;
		left: 0;
		right: 0;
		bottom: 8px;
		margin: 0;
		text-align: center;
		font-size: 9px;
		white-space: normal;
	}

	.footer-nav-column {
		display: none;
	}





	.top-button {
		position: absolute;
		z-index: 10;
		top: 20px;
		right: 17px;
		bottom: auto;
		width: 48px;
		height: 48px;
		gap: 2px;
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transform: translateY(8px);
	}

	.top-button.is-visible {
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		transform: none;
	}

	.top-button span {
		font-size: 9px;
		line-height: 10px;
	}

	.top-button i {
		font-size: 10px;
	}

	.mobile-only-text {
		display: inline;
	}

	.desktop-only-text {
		display: none;
	}

	.mobile-menu-button:focus-visible {
		outline: 2px solid var(--primary);
		outline-offset: 2px;
	}
}





@media (max-width: 380px) {
	:root {
		--mobile-header-logo-width: 138px;
	}
}

/* ==========================================================================
	 Phone chrome/footer — canonical flow layout
	 Source geometry: original 400px Figma frame; content can grow safely.
	 ========================================================================== */
@media (max-width: 1024px) {
	/* The <=1024px mobile interaction tier uses the same approved favorite visual size. */
	[data-role="favorite"] {
		--favorite-size: 24px;
	}

	:root {
		--mobile-header-line-width: 28px;
		--mobile-header-line-height: 3px;
		--mobile-header-line-shift: 7px;
	}

	/* Figma header: two 28px coral strokes with 3px thickness. */
	.mobile-menu-button {
		gap: 7px;
	}

	.site-footer {
		height: auto;
		min-height: 229px;
	}

	.site-footer__inner {
		display: flex;
		flex-direction: column;
		align-items: center;
		box-sizing: border-box;
		width: 100%;
		height: auto;
		min-height: 229px;
		margin: 0;
		padding: 21px 0 24px;
	}

	.footer-brand-column {
		display: contents;
	}

	.footer-brand-row {
		position: static;
		order: 1;
		display: flex;
		align-items: center;
		justify-content: flex-start;
		width: 208px;
		height: 32px;
		gap: 9px;
		transform: translateX(-11px); /* Figma optical balance with the docked TOP control. */
	}

	.brand--footer {
		width: 129.327px;
		flex: 0 0 129.327px;
		margin: 0;
	}

	.footer-social {
		display: flex;
		width: 69.673px;
		height: 32px;
		gap: 5.673px;
	}

	.footer-social a {
		width: 32px;
		height: 32px;
		flex: 0 0 32px;
	}

	.footer-nav-column {
		display: none;
	}

	.footer-policy {
		position: static;
		order: 2;
		display: flex;
		justify-content: space-between;
		width: 222px;
		height: auto;
		margin: 13px 0 0;
		transform: none;
		gap: 0;
		font-size: 12px;
		line-height: 14px;
		font-weight: 500;
		letter-spacing: -.6px;
	}

	.footer-notice {
		position: static;
		order: 3;
		width: 184px;
		height: auto;
		margin: 11px 0 0;
		transform: none;
		font-size: 12px;
		line-height: 14px;
		font-weight: 400;
		letter-spacing: -.6px;
		text-align: center;
		white-space: normal;
	}

	.company-info {
		order: 4;
		display: grid;
		align-self: stretch;
		width: 100%;
		max-width: none;
		margin: 10px 0 0;
		padding: 15px 16px 2px;
		box-sizing: border-box;
		gap: 8px;
		border-top: 1px solid rgba(255,158,158,.9);
		font-size: 12px;
		line-height: 18px;
		letter-spacing: -.45px;
	}

	.company-info div {
		display: grid;
		grid-template-columns: 92px minmax(0,1fr);
		align-items: start;
		width: min(100%,360px);
		margin: 0 auto;
		white-space: normal;
	}

	.company-info dt {
		display: block;
		min-width: 0;
		text-align: left;
	}

	.company-info dt::after {
		display: none;
	}

	.company-info dd {
		min-width: 0;
		padding-left: 8px;
		text-align: left;
		overflow-wrap: anywhere;
	}

	.copyright {
		position: static;
		order: 5;
		width: auto;
		height: auto;
		margin: 15px 0 0;
		font-size: 12px;
		line-height: 14px;
		font-weight: 400;
		letter-spacing: -.6px;
		white-space: nowrap;
	}

	.top-button {
		position: fixed;
		top: auto;
		right: 19px;
		bottom: max(20px,calc(env(safe-area-inset-bottom) + 12px));
		width: 46px;
		height: 46px;
		gap: 2px;
	}

	.top-button i {
		font-size: 10px;
	}

	.top-button span {
		font-size: 9px;
		line-height: 10px;
		font-weight: 700;
	}

	.top-button.is-docked {
		position: absolute;
		top: 14px;
		right: 19px;
		bottom: auto;
	}
}

/*
 * Mobile viewport stability:
 * Keep editable text controls at 16px or larger to avoid focus-triggered zoom on iPhone.
 * Non-text controls (checkbox/radio/file/etc.) are intentionally excluded.
 */
@media (max-width: 1024px) {
	input:not([type]),
	input[type="text"],
	input[type="search"],
	input[type="tel"],
	input[type="url"],
	input[type="email"],
	input[type="password"],
	input[type="number"],
	select,
	textarea {
		font-size: 16px;
	}
}


