.shell { --responsive-icon-button-size: 48px; position: relative; display: flex; width: 100%; height: var(--app-viewport-height, 100dvh); min-height: var(--app-viewport-height, 100dvh); box-sizing: border-box; flex-direction: column; padding: calc(var(--app-safe-top, 0px) + 16px) calc(var(--app-safe-right, 0px) + clamp(16px, 4.5vw, 24px)) calc(var(--app-safe-bottom, 0px) + 16px) calc(var(--app-safe-left, 0px) + clamp(16px, 4.5vw, 24px)); overflow-x: hidden; overflow-y: auto; background: radial-gradient( circle at 18% 12%, rgba(255, 181, 105, 0.34), transparent 32% ), radial-gradient( circle at 86% 24%, rgba(255, 85, 139, 0.2), transparent 30% ), linear-gradient(180deg, #fff2e8 0%, #fff8f2 46%, #ffffff 100%); color: #25191b; isolation: isolate; } .bgGlowOne, .bgGlowTwo { position: absolute; z-index: 0; pointer-events: none; } .bgGlowOne, .bgGlowTwo { border-radius: 999px; filter: blur(10px); } .bgGlowOne { top: 192px; right: -86px; width: 190px; height: 190px; background: rgba(255, 92, 142, 0.16); } .bgGlowTwo { bottom: 108px; left: -98px; width: 210px; height: 210px; background: rgba(255, 181, 104, 0.18); } .header { position: relative; z-index: 1; display: flex; min-height: 50px; align-items: center; } .contentFlow { position: relative; z-index: 1; display: flex; min-height: 0; flex: 0 1 auto; flex-direction: column; margin-top: 0; } .headerIdentity { display: flex; width: 100%; min-width: 0; flex-direction: column; align-items: center; justify-content: center; gap: 8px; } .headerAvatar { width: clamp(88px, 22.222vw, 112px); height: clamp(88px, 22.222vw, 112px); flex: 0 0 auto; margin-top: -48px; border: 4px solid rgba(255, 255, 255, 0.9); border-radius: 999px; background: linear-gradient(145deg, #ffbd7c, #ff5d91); box-shadow: 0 20px 44px rgba(255, 98, 133, 0.24), inset 0 0 0 1px rgba(255, 255, 255, 0.32); overflow: hidden; } .headerTitle { max-width: 250px; margin: 0; overflow: hidden; color: #2a1a1d; font-family: var(--font-athelas), Georgia, serif; font-size: clamp(24px, 6.4vw, 30px); font-weight: 760; letter-spacing: -0.025em; line-height: 1.05; text-align: center; text-overflow: ellipsis; white-space: nowrap; } .supportPrompt { position: relative; z-index: 1; width: min(100%, 356px); box-sizing: border-box; margin: 12px auto 0; padding: 0 4px; color: #684d51; font-size: clamp(15.5px, 4.1vw, 17px); font-weight: 650; line-height: 1.35; text-align: center; text-wrap: balance; opacity: 0.78; transition: opacity 0.24s ease; } .supportPromptReady { opacity: 1; } .purchaseFlow { position: relative; z-index: 1; display: flex; min-height: 0; flex: 0 1 auto; flex-direction: column; gap: 13px; margin-top: 13px; } .productCard { display: grid; flex: 0 1 auto; grid-template-columns: minmax(0, 1fr); align-items: center; gap: 11px; padding: 13px; border: 1px solid rgba(118, 61, 55, 0.09); border-radius: 26px; background: rgba(255, 255, 255, 0.86); box-shadow: 0 16px 36px rgba(119, 72, 67, 0.11), inset 0 1px 0 rgba(255, 255, 255, 0.9); backdrop-filter: blur(16px); } .coffeeStage { position: relative; width: clamp(150px, 42vw, 184px); aspect-ratio: 1; align-self: center; justify-self: center; overflow: hidden; border-radius: 22px; background: #c59b7d; box-shadow: 0 10px 24px rgba(102, 53, 39, 0.16), inset 0 0 0 1px rgba(126, 66, 57, 0.08); } .coffeeStage::after { position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.34); content: ""; pointer-events: none; } .coffeeImage { width: 100%; height: 100%; object-fit: cover; } .visuallyHidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .tierSelector { min-width: 0; min-height: 0; padding: 0; margin: 0; border: 0; } .tierList { display: grid; max-height: 190px; gap: 7px; padding: 2px; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; } .tierOption { position: relative; display: grid; min-height: 54px; grid-template-columns: minmax(0, 1fr) auto 22px; align-items: center; gap: 7px; box-sizing: border-box; padding: 8px 9px 8px 11px; border: 1px solid rgba(112, 71, 65, 0.12); border-radius: 17px; background: rgba(255, 255, 255, 0.72); cursor: pointer; transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease; } .tierOption[data-selected="true"] { border-color: var(--color-accent, #f84d96); background: #fff4f8; box-shadow: 0 7px 17px rgba(248, 77, 150, 0.13), inset 2px 0 0 var(--color-accent, #f84d96); } .tierSelector:disabled .tierOption { cursor: not-allowed; opacity: 0.68; } .tierInput { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .tierOption:has(.tierInput:focus-visible) { outline: 3px solid rgba(248, 77, 150, 0.26); outline-offset: 2px; } .tierDetails, .tierPriceBlock { display: flex; min-width: 0; flex-direction: column; } .tierName { display: -webkit-box; overflow: hidden; color: #2a1b1e; font-family: var(--font-athelas), Georgia, serif; font-size: clamp(15px, 4vw, 18px); font-weight: 750; letter-spacing: -0.015em; line-height: 1.05; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .tierPriceBlock { align-items: flex-end; text-align: right; } .tierPrice { color: #d23f79; font-size: clamp(15px, 3.9vw, 18px); font-weight: 900; white-space: nowrap; } .tierCheck { display: grid; width: 22px; height: 22px; place-items: center; border: 1px solid rgba(111, 76, 73, 0.2); border-radius: 999px; color: transparent; } .tierCheck svg { width: 14px; height: 14px; } .tierOption[data-selected="true"] .tierCheck { border-color: var(--color-accent, #f84d96); background: var(--color-accent, #f84d96); color: #ffffff; } .catalogStatus { display: grid; min-height: 180px; flex: 1 1 auto; place-content: center; justify-items: center; gap: 12px; padding: 20px; border: 1px solid rgba(112, 71, 65, 0.1); border-radius: 22px; background: rgba(255, 255, 255, 0.78); color: #76575c; font-size: 16px; font-weight: 700; line-height: 1.45; text-align: center; } .catalogStatus p { max-width: 270px; margin: 0; } .catalogStatus button { min-height: 44px; padding: 0 20px; border: 0; border-radius: 999px; background: #2b1a1e; color: #ffffff; cursor: pointer; font: inherit; font-size: 14px; font-weight: 850; } .productSkeleton { min-height: 174px; margin-top: 0; } .skeletonImage, .skeletonList span { background: linear-gradient( 100deg, rgba(205, 172, 157, 0.14) 20%, rgba(255, 255, 255, 0.72) 45%, rgba(205, 172, 157, 0.14) 70% ); background-size: 220% 100%; animation: skeletonSweep 1.25s linear infinite; } .skeletonImage { width: clamp(150px, 42vw, 184px); aspect-ratio: 1; justify-self: center; border-radius: 22px; } .skeletonList { display: grid; gap: 7px; } .skeletonList span { display: block; min-height: 54px; border-radius: 17px; } .paymentMethodSlot { flex: 0 0 auto; } .checkoutSlot { flex: 0 0 auto; } .checkoutButton { width: 100%; min-height: 58px; border: 0; border-radius: 999px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), transparent 34%), linear-gradient(135deg, #1f1719 0%, #6d3f49 48%, #ff548a 100%); color: #ffffff; cursor: pointer; font: inherit; font-size: clamp(17px, 4.5vw, 20px); font-weight: 900; letter-spacing: -0.01em; box-shadow: 0 14px 30px rgba(255, 83, 137, 0.24), 0 6px 14px rgba(37, 23, 27, 0.15); transition: transform 0.18s ease, filter 0.18s ease, box-shadow 0.18s ease; } .checkoutButton:disabled { cursor: not-allowed; filter: grayscale(0.25); opacity: 0.62; box-shadow: 0 8px 20px rgba(77, 52, 55, 0.1); } .checkoutButton:not(:disabled):active { transform: translateY(1px) scale(0.985); } .checkoutError { margin: 7px 0 0; color: #b2474f; font-size: 14px; font-weight: 700; line-height: 1.35; text-align: center; } @media (max-width: 350px) { .shell { padding-right: calc(var(--app-safe-right, 0px) + 12px); padding-left: calc(var(--app-safe-left, 0px) + 12px); } .header { min-height: 44px; } .headerIdentity { gap: 6px; } .headerTitle { max-width: 200px; font-size: 23px; } .productCard { gap: 9px; padding: 11px; } .tierOption { grid-template-columns: minmax(0, 1fr) auto 20px; gap: 6px; padding-right: 7px; padding-left: 9px; } .tierName { font-size: 14px; } .tierPrice { font-size: 15px; } .tierCheck { width: 20px; height: 20px; } } @media (max-height: 700px) { .shell { --responsive-icon-button-size: 44px; padding-top: calc(var(--app-safe-top, 0px) + 10px); padding-bottom: calc(var(--app-safe-bottom, 0px) + 10px); } .header { min-height: 44px; } .purchaseFlow { gap: 8px; margin-top: 8px; } .supportPrompt { margin-top: 9px; padding: 0 3px; font-size: 15px; line-height: 1.35; } .productCard { padding: 11px; } .coffeeStage, .skeletonImage { width: 148px; justify-self: center; } .tierList { max-height: 162px; gap: 6px; } .tierOption, .skeletonList span { min-height: 48px; } .checkoutButton { min-height: 54px; } } @media (max-height: 600px) { .contentFlow { margin-top: auto; } .headerAvatar { margin-top: 0; } .supportPrompt { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; } .productCard { grid-template-columns: minmax(0, 1fr); } .coffeeStage, .skeletonImage { display: none; } .productSkeleton { min-height: 150px; } .tierList { max-height: 146px; } } @media (hover: hover) { .checkoutButton:not(:disabled):hover, .tierSelector:not(:disabled) .tierOption:hover { transform: translateY(-1px); } } @media (prefers-reduced-motion: reduce) { .skeletonImage, .skeletonList span { animation: none; } } @keyframes skeletonSweep { to { background-position: -120% 0; } }