.shell { position: relative; min-height: var(--app-viewport-height, 100dvh); padding: calc(var(--app-safe-top, 0px) + clamp(18px, 4.444vw, 24px)) calc(var(--app-safe-right, 0px) + clamp(20px, 5.556vw, 30px)) calc(var(--app-safe-bottom, 0px) + clamp(24px, 6.667vw, 36px)) calc(var(--app-safe-left, 0px) + clamp(20px, 5.556vw, 30px)); overflow: hidden 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; } .bgImage, .bgGlowOne, .bgGlowTwo { position: absolute; pointer-events: none; } .bgImage { inset: 0 0 auto; height: 330px; background: linear-gradient(180deg, rgba(255, 242, 232, 0.3), #fff2e8 96%), var(--tip-cover-image) center 18% / cover no-repeat; opacity: 0.36; filter: saturate(0.95) blur(0.2px); } .bgGlowOne, .bgGlowTwo { z-index: 0; 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, .hero, .productCard, .statusMessage, .successCard, .checkoutSlot { position: relative; z-index: 1; } .header { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .backButton { display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.8); border-radius: 999px; background: rgba(255, 255, 255, 0.72); color: #382429; box-shadow: 0 12px 26px rgba(112, 67, 66, 0.12); cursor: pointer; backdrop-filter: blur(18px); transition: transform 0.18s ease, box-shadow 0.18s ease; } .backButton:active { transform: scale(0.96); } .headerPill { display: inline-flex; align-items: center; min-height: 34px; padding: 0 14px; border: 1px solid rgba(255, 116, 151, 0.22); border-radius: 999px; background: rgba(255, 255, 255, 0.66); color: #9b5360; font-size: clamp(12px, 2.963vw, 14px); font-weight: 850; letter-spacing: 0.03em; backdrop-filter: blur(18px); } .hero { display: flex; flex-direction: column; align-items: center; margin-top: clamp(18px, 5.185vw, 28px); text-align: center; animation: floatIn 0.5s ease both; } .avatarRing { display: grid; width: clamp(88px, 22.222vw, 112px); height: clamp(88px, 22.222vw, 112px); place-items: center; border: 4px solid rgba(255, 255, 255, 0.9); border-radius: 9999px; 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; } .eyebrow { margin: 16px 0 0; color: #b35d63; font-size: clamp(12px, 3.148vw, 15px); font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; } .title { max-width: 320px; margin: 8px 0 0; color: #231518; font-size: clamp(34px, 9.259vw, 48px); font-weight: 950; letter-spacing: -0.055em; line-height: 0.92; } .subtitle { max-width: 330px; margin: 14px 0 0; color: #7c6062; font-size: clamp(14px, 3.704vw, 18px); font-weight: 620; line-height: 1.52; } .productCard { display: grid; grid-template-columns: minmax(112px, 0.85fr) 1fr; align-items: center; gap: clamp(16px, 4.444vw, 24px); margin-top: clamp(24px, 7.407vw, 38px); padding: clamp(18px, 5.185vw, 28px); border: 1px solid rgba(118, 61, 55, 0.08); border-radius: clamp(30px, 8.148vw, 44px); background: linear-gradient(145deg, rgba(255, 255, 255, 0.9), rgba(255, 237, 223, 0.78)), #ffffff; box-shadow: 0 26px 62px rgba(119, 72, 67, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.86); animation: floatIn 0.5s 0.08s ease both; } .coffeeStage { position: relative; width: 100%; aspect-ratio: 1; overflow: hidden; border-radius: clamp(24px, 6.667vw, 32px); background: #c59b7d; box-shadow: 0 18px 34px rgba(102, 53, 39, 0.18), inset 0 0 0 1px rgba(126, 66, 57, 0.08); isolation: isolate; } .coffeeStage::after { position: absolute; inset: 0; z-index: 1; 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; } .productCopy { min-width: 0; } .productBadge { display: inline-flex; align-items: center; gap: 7px; padding: 8px 11px; border-radius: 999px; background: rgba(255, 91, 142, 0.1); color: #b84d65; font-size: clamp(11px, 2.778vw, 13px); font-weight: 900; } .productName { margin: 15px 0 0; color: #231719; font-size: clamp(28px, 7.407vw, 40px); font-weight: 950; letter-spacing: -0.045em; line-height: 1; } .productPrice { margin: 10px 0 0; color: #ff4f86; font-size: clamp(25px, 6.667vw, 36px); font-weight: 950; letter-spacing: -0.04em; } .tierSelector { grid-column: 1 / -1; min-width: 0; margin: 2px 0 0; padding: 0; border: 0; } .tierLegend { width: 100%; margin-bottom: 12px; color: #6f5055; font-size: clamp(13px, 3.148vw, 15px); font-weight: 850; letter-spacing: 0.025em; } .tierList { display: grid; gap: 10px; } .tierOption { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto 28px; align-items: center; gap: 12px; min-height: 72px; padding: 12px 14px 12px 16px; border: 1px solid rgba(112, 71, 65, 0.12); border-radius: 20px; background: rgba(255, 255, 255, 0.68); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9); cursor: pointer; transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; } .tierOption[data-selected="true"] { border-color: var(--color-accent, #f84d96); background: linear-gradient(105deg, rgba(255, 255, 255, 0.94), rgba(255, 235, 243, 0.9)), #ffffff; box-shadow: 0 12px 28px rgba(248, 77, 150, 0.16), inset 3px 0 0 var(--color-accent, #f84d96); } .tierOption[data-unavailable="true"], .tierSelector:disabled .tierOption { cursor: not-allowed; } .tierOption[data-unavailable="true"] { filter: grayscale(0.25); opacity: 0.56; } .tierSelector:disabled .tierOption { opacity: 0.72; } .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.28); outline-offset: 3px; } .tierDetails, .tierPriceBlock { display: flex; min-width: 0; flex-direction: column; } .tierDetails { gap: 4px; } .tierName { overflow: hidden; color: #2a1b1e; font-family: var(--font-athelas), Georgia, serif; font-size: clamp(17px, 4.259vw, 21px); font-weight: 750; letter-spacing: -0.02em; line-height: 1.05; text-overflow: ellipsis; white-space: nowrap; } .tierPriceBlock { align-items: flex-end; gap: 3px; text-align: right; } .tierPrice { color: #d23f79; font-size: clamp(14px, 3.519vw, 17px); font-weight: 950; white-space: nowrap; } .tierUnavailable { color: #8f7376; font-size: 10px; font-weight: 800; } .tierCheck { display: grid; width: 25px; height: 25px; place-items: center; border: 1px solid rgba(111, 76, 73, 0.2); border-radius: 999px; color: transparent; } .tierOption[data-selected="true"] .tierCheck { border-color: var(--color-accent, #f84d96); background: var(--color-accent, #f84d96); color: #ffffff; box-shadow: 0 5px 14px rgba(248, 77, 150, 0.26); } .successCard { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 16px; padding: 16px 18px; border: 1px solid rgba(118, 61, 55, 0.08); border-radius: 24px; background: rgba(255, 255, 255, 0.76); box-shadow: 0 16px 38px rgba(119, 72, 67, 0.09); backdrop-filter: blur(16px); } .statusMessage, .successTitle, .successText { margin: 0; } .statusMessage { margin-top: 14px; color: #b2474f; font-size: 14px; font-weight: 720; line-height: 1.45; text-align: center; } .successCard { justify-content: flex-start; border-color: rgba(255, 84, 135, 0.16); background: rgba(255, 246, 249, 0.86); color: #ff4f86; } .successTitle { color: #25191b; font-size: 15px; font-weight: 900; } .successText { margin-top: 2px; color: #8a686b; font-size: 13px; font-weight: 620; } .successButton { margin-left: auto; border: 0; border-radius: 999px; padding: 9px 12px; background: #231719; color: #ffffff; font: inherit; font-size: 12px; font-weight: 850; cursor: pointer; } .checkoutSlot { margin-top: clamp(18px, 5.185vw, 28px); } .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(16px, 4.074vw, 19px); font-weight: 940; letter-spacing: -0.01em; box-shadow: 0 18px 40px rgba(255, 83, 137, 0.28), 0 8px 18px rgba(37, 23, 27, 0.18); 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 10px 24px rgba(77, 52, 55, 0.12); } .checkoutButton:not(:disabled):active { transform: translateY(1px) scale(0.985); } .checkoutError { margin: 10px 0 0; color: #b2474f; font-size: 14px; font-weight: 720; line-height: 1.45; text-align: center; } @media (max-width: 380px) { .productCard { grid-template-columns: 1fr; text-align: center; } .coffeeStage { width: min(100%, 220px); justify-self: center; } .tierName { white-space: normal; } } @media (hover: hover) { .backButton:hover, .checkoutButton:not(:disabled):hover { transform: translateY(-1px); } .tierSelector:not(:disabled) .tierOption:not([data-unavailable="true"]):hover { border-color: rgba(248, 77, 150, 0.42); transform: translateY(-1px); } } @keyframes floatIn { from { opacity: 0; transform: translateY(18px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } }