.cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; } .card { --on-background: #2c4678; --on-background-secondary: #455e91; position: relative; min-height: 470px; min-width: 0; } .journey, .timetable { --background: #f3f3fa; } .map { --background: #d8e2ff; } .favorites { --background: #ffeef2; --on-background: #861118; --on-background-secondary: #861118; } .content { position: relative; margin-top: 36px; } .illustration { position: relative; width: 100%; max-width: 430px; height: 250px; align-self: center; } .roundStar, .favoriteStar, .timetableStar { position: absolute; pointer-events: none; } .roundStar { width: 260px; height: 260px; bottom: -130px; left: -130px; color: #d8e2ff; transform: rotate(12deg); } .favoriteStar { width: 200px; height: 200px; top: -155px; right: -130px; color: #ff003d; opacity: 0.12; transform: rotate(-12deg); } .timetableStar { width: 240px; height: 240px; bottom: -130px; right: -130px; color: #d8e2ff; transform: rotate(-12deg); } .journeySheet { position: relative; margin: 20px 14px 0; padding: 24px; border-radius: 24px; background: #fff; transform: rotate(-4deg); transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .place { position: relative; display: flex; align-items: center; gap: 16px; & + & { margin-top: 28px; } } .place > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; } .place span:not(.point) { font-size: 0.8rem; color: #455e91; font-weight: 600; } .place strong { font-size: 1.05rem; font-weight: 800; } .point { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 16px; flex-shrink: 0; background: #d8e2ff; font-size: 1.5rem; font-weight: 800; } .destination { background: #ddf9d0; color: #254817; } .journeyLine { position: absolute; left: 45px; top: 60px; bottom: 60px; border-left: 2px dashed #aec6ff; } .journeyChip, .mapChip, .favoritesChip { position: absolute; display: flex; align-items: center; gap: 10px; border-radius: 40px; padding: 14px 22px; font-size: 1.2rem; font-weight: 700; white-space: nowrap; transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .journeyChip { background: #ddf9d0; color: #254817; right: 0; bottom: 0; transform: rotate(7deg); span { font-size: 1.6rem; } } .mapIllustration { height: 250px; } .mapSheet { margin: 8px 0 0; transform: rotate(4deg); transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .mapDrawing { display: block; width: 100%; height: auto; } .mapChip { background: #fff; color: #2c4678; bottom: -4px; left: 50%; transform: translateX(-50%) rotate(-6deg); } .chipDot { width: 10px; height: 10px; background: #2c4678; border-radius: 50%; } .locationHalo { transform-box: fill-box; transform-origin: center; animation: locationPulse 3s ease-in-out infinite; } .favoriteTicket { display: flex; align-items: center; gap: 16px; position: absolute; width: calc(100% - 26px); padding: 20px; border-radius: 24px; background: #fff; color: #861118; transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; } strong { font-size: 1.45rem; font-weight: 800; } div span { font-size: 0.8rem; font-weight: 600; } } .homeTicket { top: 18px; left: 0; transform: rotate(-6deg); } .workTicket { top: 116px; right: 0; transform: rotate(6deg); } .favoriteIcon { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; flex-shrink: 0; border-radius: 16px; background: #ffeef2; color: #ff003d; svg { width: 24px; height: 24px; } } .ticketArrow { margin-left: auto; font-size: 1.6rem; } .favoritesChip { background: #861118; color: #ffeef2; bottom: -4px; left: 16px; transform: rotate(-5deg); font-size: 1rem; } .timetableSheet { position: relative; margin: 0 14px; padding: 20px; border-radius: 24px; background: #fff; transform: rotate(3deg); transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .dayTypes { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; span { padding: 7px 12px; border-radius: 40px; font-size: 0.75rem; font-weight: 700; background: #ddf9d0; color: #254817; } span + span { background: #ffeef2; color: #861118; } } .days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; span { display: flex; align-items: center; justify-content: center; height: 32px; font-size: 0.7rem; font-weight: 700; border-radius: 10px; background: #d8e2ff; } .weekend { background: #ffeef2; color: #861118; } } .hours { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; > div { display: grid; grid-template-columns: 42px repeat(3, minmax(0, 1fr)); align-items: center; gap: 8px; } strong { font-size: 1.25rem; font-weight: 800; } span { padding: 7px 0; text-align: center; border-radius: 10px; background: #f3f3fa; font-size: 0.9rem; font-weight: 600; } } .card:hover .journeySheet { transform: rotate(-1deg) translateY(-4px); } .card:hover .journeyChip { transform: rotate(3deg) translateY(-4px); } .card:hover .mapSheet { transform: rotate(1deg) translateY(-4px); } .card:hover .homeTicket { transform: rotate(-3deg) translateY(-4px); } .card:hover .workTicket { transform: rotate(3deg) translateY(4px); } .card:hover .timetableSheet { transform: rotate(0deg) translateY(-4px); } @keyframes locationPulse { 0%, 100% { transform: scale(0.85); opacity: 0.6; } 50% { transform: scale(1.15); opacity: 1; } } @media (max-width: 1240px) { .cards { gap: 36px; } } @media (max-width: 980px) { .cards { grid-template-columns: minmax(0, 1fr); } .card { min-height: 430px; } } @media (max-width: 800px) { .cards { gap: 24px; } } @media (max-width: 500px) { .cards { gap: 16px; } .card { padding: 24px; min-height: 400px; } .content { margin-top: 28px; } .illustration { height: 240px; } .journeySheet { margin: 18px 4px 0; padding: 20px 16px; } .journeyLine { left: 37px; } .place { gap: 12px; } .place strong { font-size: 0.9rem; } .journeyChip, .mapChip { font-size: 1rem; padding: 12px 18px; } .mapIllustration { height: 210px; } .mapSheet { margin-top: 20px; } .mapChip { bottom: 0; } .favoriteTicket { padding: 16px; gap: 12px; strong { font-size: 1.25rem; } div span { font-size: 0.7rem; } } .timetableSheet { margin: 0 4px; padding: 16px 12px; } .hours > div { grid-template-columns: 34px repeat(3, minmax(0, 1fr)); gap: 6px; } } @media (max-width: 360px) { .journey .illustration, .favorites .illustration { height: 285px; } } @media (prefers-reduced-motion: reduce) { .locationHalo { animation: none; } .journeySheet, .journeyChip, .mapChip, .favoritesChip, .mapSheet, .favoriteTicket, .timetableSheet { transition: none; } .card:hover .journeySheet { transform: rotate(-4deg); } .card:hover .journeyChip { transform: rotate(7deg); } .card:hover .mapSheet { transform: rotate(4deg); } .card:hover .homeTicket { transform: rotate(-6deg); } .card:hover .workTicket { transform: rotate(6deg); } .card:hover .timetableSheet { transform: rotate(3deg); } }